在vimrc中设置record
Vim的record功能在大量重复操作的场景下非常实用,但是,一般我们都要每次进入Vim时重新录制record。而对于一些非常常用的record,我们想让它永久地保持,我们知道这种需求需要借助Vim的配置文件vimrc。但是具体怎么操作呢,笔者在走了一些弯路之后将设置方法记录下来,希望能对大家有帮助。
我们以添加 Python 单行注释为例,这需要我们在每一行前面添加:#。
录制record的方法我们已经比较熟悉了,不熟悉的同学可参考:Vim 重复操作的宏录制。
我们知道Vim中的record是录制保存在寄存器中的,以寄存器 q 为例,整个录制的键位顺序为:
以下代码都是键盘的全部操作,包括在常规模式和插入模式下,模式切换的按键也体现在代码中
<ESC>qqI#<ESC>j0q
这样我们就将添加单行注释的record录制在了寄存器 q 中,只需 n@q 即可完成 n 行单行注释。
那么,我们要怎样把它保存到 vimrc 中呢?实际上,我们可以通过 :registers 命令来查看当前各个寄存器的值。其中寄存器 q 的值如下:
--- Registers ---
...
"q I#^[j0
...
可以看到 <ESC> 被替换成了 ^[,并且需要注意:这里的 ^[ 是有颜色的,笔者的机器上这里是蓝色的。这一段q 的值就是我们需要添加到 vimrc 中的。
具体怎么添加呢?我们打开 vimrc 文件,并将上面的record重新录制一遍,然后键入:
<ESC>"qp
我们会发现寄存器的值输出在了文本中。我们只要将这个值赋给某个寄存器就可以了。但是一定要注意:不能直接将已经录制的寄存器的值复制粘贴给某个我们想要长久保持的寄存器。可以试一下,这样的话像 ^[ 这样的键是没有颜色标识的,这样我们 @ 执行 record 的话只会输出一段字符串。
假设我们将录制好的record存放在寄存器 q 中,我们想要长期将该record放在寄存器 m 中,可行的做法是这样:
<ESC>olet @m = "<ESC>"qpa""<ESC>
也就是说,我们必须通过 "qp 来将录制在寄存器 q 中的值输出出来,而不能直接复制文本。
这样编辑完 vimrc 文件之后,保存退出。再次Vim打开一个文件,可验证长期record生效。
Ref:
https://blog.easwy.com/archives/vi-tip-of-using-recording/