接下来, 我们要将文本的偶数行修改为:
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 模式。
这些细节可以保证录制得到的宏更具有一般性。
转自http://edyfox.codecarver.org/html/vim_edit_tips.html
如何保存宏?