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编辑器的指令)。

image.png

如上图,按下qa后进入宏录制模式,此时编辑器的左下角会出现记录中 @a(或 recording @a )的提示符,@字母后面跟着的就是存储宏的寄存器名称。

接下来的一切操作,都会作为宏的一部分被记录下来。要停止宏录制,需要再按一次q键,此时左下角的 recording @a提示符会消失。

(二)回放宏

对宏的回放等同于让vim编辑器把宏里面记录的操作再进行一次。

要回放宏,也很简单,只需要在normal模式下按下@键,再接上宏寄存器的名称即可。

仍然以上面截图中的文件为例。现在我录制了一段宏操作,内容是进入插入模式(i),将光标移动到行尾(<END>),键入字符“.”,以及退出插入模式(<ESC>)。接下来,将光标移动到剩下的每一行,然后键入@a,vim就会自动完成这一套操作,为每一行文字加上句号(如下图)。

image.png

另一个指令n@a则可以指定宏的回放次数,其中n为具体数字。仍然以上面那个hello.txt为例,在normal模式下输入10@a可以将宏播放10次,最终的效果就是在行尾再添加十个句号(如下图)

image.png

值得注意的是,vim会对回放宏视作一个单步的操作(不论回放的次数设置的是多少),因此在回放宏以后按下u撤销操作,会直接回到回放之前的状态。

此外,还有快捷指令@@可以一键执行最近一次回放的宏操作,而不需要给出具体的寄存器名称。

参考链接: