Vim代码编辑器的宏录制功能
“简单来说,normal模式中按下字母
q
进入录制模式,此时的操作会被记录。再次按下q
录制完成。要执行已录制好的宏,只需要键入n@a
即可,其中n
是执行次数,a
是宏名称”
Vim录制和回放宏
宏(macros)可以理解为一段自动化的操作流程,或者批处理操作。绝大多数情况下,“宏”这个词的使用暗示着将小命令或动作转化为一系列指令。
许多软件都支持录制宏操作(把一些操作步骤录制下来当作一段批处理程序来使用),例如office三件套、adobe全家桶等。这种自动化操作介于纯手工干活和使用编程语言操作文件之间,既可以实现办公自动化,又不用编写很多代码,因此可以大大提高生产力。
vim作为一个强大的代码编辑器,当然也是支持宏录制和宏回放的。本文将简要介绍vim录制和使用宏的方法。
在vim的帮助系统中,宏操作位于“complex-repeat”帮助文件中,可以在vim程序的normal模式下输入:help complex-repeat
或:help q
指令来阅读。
(一)录制宏
要录制一段宏,可以在vim的normal模式下使用q{0-9a-zA-Z}
指令,也就是先按下字母q
然后按下任意字母或数字键,这样就会开始宏录制,其中后者会关联到一个与按下的键相同名称的“寄存器”(register),宏会存储在这个寄存器中。
例如,qa
就是将宏录制到寄存器a
里(这个指令很容易和:qa
弄混,后者是退出vim编辑器的指令)。
如上图,按下qa
后进入宏录制模式,此时编辑器的左下角会出现记录中 @a
(或 recording @a
)的提示符,@
字母后面跟着的就是存储宏的寄存器名称。
接下来的一切操作,都会作为宏的一部分被记录下来。要停止宏录制,需要再按一次q
键,此时左下角的 recording @a
提示符会消失。
(二)回放宏
对宏的回放等同于让vim编辑器把宏里面记录的操作再进行一次。
要回放宏,也很简单,只需要在normal模式下按下@
键,再接上宏寄存器的名称即可。
仍然以上面截图中的文件为例。现在我录制了一段宏操作,内容是进入插入模式(i
),将光标移动到行尾(<END>
),键入字符“.
”,以及退出插入模式(<ESC>
)。接下来,将光标移动到剩下的每一行,然后键入@a
,vim就会自动完成这一套操作,为每一行文字加上句号(如下图)。
另一个指令n@a
则可以指定宏的回放次数,其中n
为具体数字。仍然以上面那个hello.txt
为例,在normal模式下输入10@a
可以将宏播放10次,最终的效果就是在行尾再添加十个句号(如下图)
值得注意的是,vim会对回放宏视作一个单步的操作(不论回放的次数设置的是多少),因此在回放宏以后按下u
撤销操作,会直接回到回放之前的状态。
此外,还有快捷指令@@
可以一键执行最近一次回放的宏操作,而不需要给出具体的寄存器名称。