[VIM]录制递归调用的宏

在dailyvim.blogspot.com上看到一篇讲述Recursive Macros的小文。

以前从来没意识到vim的宏还支持递归,递归宏有什么作用呢? 最容易想到的就是可以在整个文件范围内执行宏。之前要在一个文件中从头到尾执行一个宏要怎么做,输入N@a,N是个很大的数,一定要大于文件总行数,a是寄存器的名字。有了宏递归,只需@a就可以搞定。

举个例子,有下面这样的文件内容:

1

2

3

4

5

将光标移至首行1的位置,在普通模式下键入以下操作:

qaq 清除寄存器a

qa<Ctrl-a>j@aq

其中<Ctrl-a>是将当前光标之上或之后的数值或者字母加1。

现在在首行键入@a,即可在将每一行的数字加一, 效果如下:

2

3

4

5

6

递归宏的另外一种应用就是生成一个连续序列,如下面的操作:

qaq

qYp<Ctrl-a>@ap

其中 Y复制一行,p将复制的内容贴到下一行,光标也会跟随到下一行。这个递归宏会生成新行,没有递归出口,只能用<Ctrl-C>强制退出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值