gvim 快速编辑例子

时间:2022-11-10 23:27:36

1 准备工作

首先, 我们打开 VIM, 输入一段文本,  用于今天的演示:

this is a test

2 查找替换

按几下 ESC 进入 Normal 模式, 输入以下命令: :%s/ /\r/g 。 回车后得到的效果如下:

this
is
a
test

解说: 这条命令的作用是,  将文章中所有的空格替换为回车 。

3 行的拼接

按几下 ESC 进入 Normal 模式, 然后输入这段命令: ggVGgg   表示跳到文本开头 , V  表示进入行选择模式 , G   表示选择到文章末尾 。 通过这 3 条命令, 总共 4  个按键, 我们选中了整篇文章 。

然后, 按下冒号 :  进入命令模式 ,  状态栏上出现: :'<,'> 字样,  在它后面输入 j , 然后回车, 可以看到, 整篇文章又被拼接起来了 , 整个操作包括回车只按了 7  次键:

this is a test

4 复制粘贴与重复动作

按几下 ESC 确认当前处在 Normal 模式下, 然后按 yy , 即可将当前行复制到默认寄存器中  (相当于剪贴板) 。 然后按下 12p , VIM  将执行粘贴动作 12 次, 屏幕上出现了 13  行这样的字符:

this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test  

解说: 在 VIM 中, 复制和粘贴操作相当快捷。 另外,  VIM  中大部分命令都可以通过在命令前加数字重复若干遍 。

5 列操作

把每一行的开头第一个字母改为大写。

按几下 ESC 确认当前处在 Normal 模式下, 然后按  gg  跳到第一行, 按下 Ctrl + v  进入列选择模式  (如果你按下 Ctrl + v 没能进入列选择模式: 编写自己的 _vimrc(在安装跟目录)! 如果你不会写, 请放一个空文件在那儿),  然后按 G , 跳到文章最后一行, 此时你应该看到, 文本的第一列被选中了, 而且只选中了第一列。 按下 U  键,  可以看到, 每行的第一个字母都变为大写 了。 提示:  选中文本后按 u   可以将文本变为小写 ,  选中文本后按 ~   可以翻转原有的大小写 。

This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test

然后, 我们在每行的前面 加上一个星号 。 按下  gg  跳到第一行, 按 Ctrl + v 进入列选择模式,  再按 G , 选中全文的第一列, 然后按 I , 进入列插入状态 , 输入星号  * , 再按下 ESC , 你会看到,  所有行之前都出现了一个星号:

*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test  

解说:  另外,  列选择后按 x 删除 被选中的块, 可以批量地解除注释。

6 宏的录制

接下来, 我们要将文本的偶数行修改为:  This is another test 。  由于所有的偶数行都要进行同样的操作,  因此我们把这个操作录制下来,  然后重复播放若干遍, 就能很快地完成这项工作了。

首先, 按几下 ESC 确认处在 Normal 模式下, 再按下  gg  跳到第一行, 准备开始操作。  我们首先按下 q  键,  然后再按一个其它字母 ,  将这个宏录制 到该字母对应的寄存器 下。  例如我们这里使用 m  寄存器, 则按  qm 。 此时 VIM 状态栏出现“recording” 字样,  表明已经进入了录制状态 。

然后, 我们把第二行的 a  修改为  another 。 首先按 j  进入第二行 ,  然后按 $  跳到行末 , 再按两下 b   往前跳两个单词 , 此时光标停在字母 a  上。  然后我们输入caw 删除 a  并进入插入状态, 然后输入 another  , 按  ESC 回到 Normal 状态, 按 j  进入下一行,  整个操作步骤就完成了。 最后, 我们再按一下 q , 结束该宏的录制。

接下来我们播放这个宏, 完成整个操作步骤。  在键盘上输入 1000@m , 表示将 m  寄存器里的宏播放 1000 次, 马上可以看到,  文章中所有偶数行的 a  都变成了  another

*This is a test
*This is another test
*This is a test
*This is another test
*This is a test
*This is another test
*This is a test
*This is another test
*This is a test
*This is another test
*This is a test
*This is another test
*This is a test  

解说: 虽然我们指定播放 1000 次 , 但事实上,  执行到第 6 次的时候, 光标挪到了屏幕最下方,  于是执行过程就自动停止了。 因此,  在批量操作的时候, 我们可以指定足够大的数字,  而不用担心出现问题。

另外, 修改 a  的时候,  我们跳到行末后再使用 b  命令以单词为单位跳转, 而没使用 h  一个字母一个字母往回挪, 我们使用 caw  修改整个单词 , 而不使用 s  命令删除单个字母并进入 Insert 模式 。  这些细节可以保证录制得到的宏更具有一般性。

7 点命令

接下来, 我们在每行的末尾加上一个感叹号  !

由于每行长度不同,  我们无法使用块选择方式 批量尾部添加感叹号。  使用宏录制的方式是可以做到这点的,  但操作稍嫌繁琐了一些。 使用点命令,  可以非常方便地做到这一点。

先按几下 ESC 确认当前出于 Normal 模式, 然后使用  gg  跳到第一行, 按 A   进行行尾插入 , 输入 ! , 然后按下 ESC 回到  Normal 状态, 第一行的感叹号就添加完毕了。

然后, 我们按 j  进入第二行 , 再按 . , 可以看到,  第二行尾部也出现了感叹号。 反复按 j.j.j. ,  直到每一行尾部都添加了感叹行为止。

*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!  

解说: 点命令 的作用是, 重复最近一次所做的编辑操作 。  由于在第一行里做的操作是行尾添加,  因此在第二行重复这个动作的时候,  也会在行尾添加同样的字符。  点命令功能不如宏强大, 但它使用起来比宏简便,  因此也有着广泛的用途。

gvim 快速编辑例子的更多相关文章

  1. 在 Sublime Text 2 中使用 SFTP 插件快速编辑远程服务器文件

    在 Sublime Text 2 中使用 SFTP 插件快速编辑远程服务器文件 开源程序 浏览:29555 2013年05月02日 文章目录[隐藏] 常见的工作流程 SFTP 安装和使用方法 第一步: ...

  2. Git Bash下实现复制粘贴等快速编辑功能

    在windows下使用Git Bash会经常用到选中.复制.粘贴等功能,但是一般用的方法会很复杂,笔者经过查阅一些资料,特整理一些常见编辑功能的实现方法. (1)默认方法: 单击左上角的logo ic ...

  3. C&num;下控制台程序窗口下启用快速编辑模式运行线程会阻止线程运行

    最近做一个小的功能,使用C#控制台程序开启一个线程进行无限循环没5秒处理一次程序,发现控制台窗口在开启快速编辑模式情况下,进行选择程序打印 出来的文字后发现线程不走了,将快速编辑模式去除后,线程就不会 ...

  4. 在C&num;中,Windows Console控制台 设置控制台标题、禁用关闭按钮、关闭快速编辑模式、插入模式

    设置控制台标题 禁用关闭按钮 关闭快速编辑模式 关闭插入模式 设置控制台标题.禁用关闭按钮 #region 设置控制台标题 禁用关闭按钮 [DllImport("user32.dll&quo ...

  5. PathMarker:命令行快速编辑跳转工具&lpar;配合git,find等&rpar;

    简介 当使用git, find等工具时,一般需要进一步打开文件或跳转目录. 通常的做法是使用鼠标复制黏贴,或者手工输入. PathMarker提供一种快速通过标号,编辑相关文件,跳转相关目录的方法,提 ...

  6. Emmet:一个Html&sol;Css快速编辑神器的插件

    一.介绍:Emmet的前身是大名鼎鼎的Zen coding,如果你从事Web前端开发的话,对该插件一定不会陌生.它使用仿CSS选择器的语法来生成代码,大大提高了HTML/CSS代码编写的速度 二.使用 ...

  7. Windows下使用Sublime text3快速编辑Linux文件,写Shell

    所需要配合的工具是WinSCP 添加完毕之后直接在目录下双击要编辑的shell脚本文件,即可弹出Sublime Text的编辑器 然后咱通过Putty看看Linux虚拟机上的文件有没有发生变化

  8. phpstorm使用zen coding 快速编辑补全html&sol;css代码

    百科定义: 使用仿CSS选择器的语法来快速开发HTML和CSS ——由Sergey Chikuyonok开发. Zen Coding由两个核心组件组成:一个缩写扩展器(缩写为像CSS一样的选择器)和上 ...

  9. webstorm的live templates快速编辑功能&comma;让你的css JS代码书写速度飞起来

    前言: Emmet的前身是大名鼎鼎的Zen coding,如果你从事Web前端开发的话,对该插件一定不会陌生.它使用仿CSS选择器的语法来生成代码, 大大提高了HTML/CSS代码编写的速度,比如下面 ...

随机推荐

  1. ACM题目————次小生成树

    Description 最小生成树大家都已经很了解,次小生成树就是图中构成的树的权值和第二小的树,此值也可能等于最小生成树的权值和,你的任务就是设计一个算法计算图的最小生成树. Input 存在多组数 ...

  2. js中对象的创建

    json方式,构造函数方式,Object方式,属性的删除和对象的销毁 <html> <head> <title>js中的对象的创建</title> &l ...

  3. Struts2 初体验

    Sturts是一款优雅的,可扩展性很强的框架.它是由Struts开发团队和WebWord团队合作,共同开发的一个新的产品.新版本的Struts2 更加容易使用,更加接近Struts所追求的理念.从开发 ...

  4. android studio 实现代码混淆

    =======本文章属于转载==========原文章地址:http://my.oschina.net/aibenben/blog/370985 这篇文章等是跟大家分享一在Android studio ...

  5. c&num; in depth之泛型的实现

    1.默认值表达式 如果已经明确了要处理的类型,也就知道了它的“默认”值.不知道要引用的类型,就不能直接指定默认值.不能使用null,因为它可能不是一个引用类型,不能使用0,因为它可能不是数值类型.虽然 ...

  6. 浅论ajax跨域!从一个例子开始!

    //所谓跨域,简单来说就是去访问不是自己域名下的数据 <!DOCTYPE html> <html lang="en"> <head> <m ...

  7. 学好js的步骤

    第一步:打基础,建议看<JavaScript权威指南>,并作为参考书,供以后学习用. 第二步:进阶学习:建议看<JavaScript高级程序设计>,<精通JavaScri ...

  8. ELK对Tomcat日志双管齐下-告警触发&sol;Kibana日志展示

    今天我们来聊一聊Tomcat,相信大家并不陌生,tomcat是一个免费开源的web应用服务器,属于轻量级的应用程序,在小型生产环境和并发不是很高的场景下被普遍使用,同时也是开发测试JSP程序的首选.也 ...

  9. mac下启动mysql

    mac下使用mysql有点蛋疼,每次都要找命令.可能不同版本或者安装方式mysql的位置不太一样, 可以使用locate mysql.server查找一下. # start sudo /usr/loc ...

  10. Spring DAO模块

    Spring的DAO模块提供了对JDBC.Hibernate.Mybatis等DAO层支持,本节介绍DAO模块对JDBC的支持.DAO模块依赖ommons-dbcp.jar.commons-pool. ...