vim宏录制

来源:互联网 发布:zk框架 知乎 编辑:程序博客网 时间:2024/06/05 10:10
 看陈皓大哥的博客(http://coolshell.cn/),学习VIM,宏录制的神奇在我脑海中挥之不去,不禁感叹VIM的强大。
示例如下:
宏录制: qa 操作序列 q, @a, @@
qa 把你的操作记录在寄存器 a。
于是 @a 会replay被录制的宏。
@@ 是一个快捷键用来replay最新录制的宏。
示例


在一个只有一行且这一行只有“1”的文本中,键入如下命令:


qaYp<C-a>q→
qa 开始录制
Yp 复制行.
<C-a> 增加1.
q 停止录制.
@a → 在1下面写下 2
@@ → 在2 正面写下3
现在做 100@@ 会创建新的100行,并把数据增加到 103.




所有这几个命令里面,唯独不理解Ctrl + a 是什么意思,虽然可以很容易的猜到,我还是google了一下,原来在VIM中Ctrl + a 和Ctrl + x也是有作用的啊,就是将数字+1、-1。
于是我模仿上面的宏录制,来实现一个{1, 3, 5, 7, 9, 11 ……}这样的数据列表。
1.输入1, (1,“,”号,“ ”空格——为了编码规范)
2.输入qa( 开始录制)
3.yyp(复制当前行,粘贴到下一行)
4.2,Ctrl + a (先输入2,再按下Ctrl + a)
5.q (按q结束录制)
6.N@@(该命令用以replay宏, N,代表要重复几次)
7.选中刚刚产生的数据,按J(将所有行连接成一行)
下面这些信息转载自:http://www.cnblogs.com/ini_always/archive/2011/09/21/2184446.html
    讲的是可以将宏录制到不同的寄存器中,qa(中的a是指a号寄存器,也可以是b,c神马的,而使用的时候也是制定寄存器5@a,5@@是指使用最近录制的宏)
在编辑某个文件的时候,可能会出现需要对某种特定的操作进行许多次的情况,以编辑下面的文件为例:
;=====================================================================================
;This is a sample configuration file when upgrading XXX using InstallShield.
;Author:        ini_always
;Date:          8/24/2011
;Last modified: 9/20/2011
;Note: Install script does NOT verify whether the configuration file is in a "WELL"
;format, a WRONG format may lead to installation failure.
;If more information is needed, please check the document for details.
;=====================================================================================
复制代码
这是一个ini类型的配置文件,可以看到每一行的最前面有一个逗号,现在如果需要将每行前面的逗号去掉,怎么办?在第一行行首按x,然后按j,然后按x...这样重复下去?确实,我最开始也是这样的,但如果这个文件有100行要这样修改呢?或者1000行?
好吧,少废话,进入正题。所谓宏,在vim里面是指某种特定顺序的一系列操作,我们可以录制自己的操作序列,然后重复这个序列多次,以简化某种重复的操作。vim宏有录制和播放的过程,录制就是你教给vim该怎么操作,播放就是vim照着你教的进行自动操作。因此,对于上面的文件处理,首先要进行宏录制:
1.把光标定位在第一行;
2.在normal模式下输入qa(当然也可以输入qb, qc, etc,这里的a, b, c是指寄存器名称,vim会把录制好的宏放在这个寄存器中)(PS:如果不知道什么是vim的寄存器,请自行放狗搜之);
3.正常情况下,vim的命令行会显示“开始录制”的字样,这时候,把光标定位到第一个字符(按0或者|),再按x删除,按j跳到下一行;
4.normal模式下输入q,结束宏录制。
好了,经过以上步骤,我们定义了一个存储在寄存器a中的宏,它的操作序列是:0->x->j,也就是跳到行首,删除,跳到下一行。
现在,第一行已经删除了行首的逗号,而且光标也已经在第二行,现在,在normal模式下输入@a,以播放我们刚录制好的存在寄存器a中的宏。于是,第二行行首的逗号也被删除,光标停在了第三行。
这也不简单啊?你肯定会这样想,要删除100行,我还得输入100个@a,我还不如手动删除呢。呵呵,vim早就想到了,输入7@a,好了,剩下的7行全部搞定了。(PS:在命令前面加数字,就是代表要执行这个命令多少次)
当然,这个例子很简单,但也很典型。利用好vim的宏,可以使一些原本很无聊的工作要简单很多
原创粉丝点击