递归宏

Vim 宏也可以递归。当你需要对文件末尾的每一行(或其他文本对象)执行操作时,这非常有用。

要记录递归宏,请从空寄存器开始。 (可以使用 q<register>q 清空寄存器。)

在每一行上选择一致的起点以开始和结束。

在完成录制之前,请将宏本身作为最后一个命令调用。 (这就是寄存器必须为空的原因:所以它什么都不做,因为宏还不存在)。

示例,给出文本:

line 1
line 2
line 3
foo bar
more random text
.
.
.
line ???

在正常模式下,光标位于第一行,空寄存器 a,可以记录此宏:

qaI"<Esc>A"<Esc>j@aq

然后通过单次调用 @a,文件的所有行现在都在双引号内。