Vim中的宏可以理解为把你指定的一系列操作命令缓存到某个Vim寄存器中(录制),然后在需要的时候将缓存的一系列指令进行回放,达到重复操作的目的,其作用类似于vim重复操作命令

那么,如何指定操作系列呢?

一、录制宏

(1) 在Vim命令模式下,按下 q寄存器名 后开始进入宏录制状态,vim编辑器左下角会显示”记录中”或”recording”

上述寄存器名是指a、b、c等26个英文字母命名的有名寄存器,或0-9等10个数字寄存器

(2) 在vim宏录制状态下,按 q 结束宏录制

(3) 假设录制的宏记录在寄存器a,可以使用Vim命令 @a 执行这个宏,也可以加上执行次数 10@a 执行10次宏

假设需要在以下文件的每行开头添加“System.out.println(”,结尾添加“);”,可以进行以下操作:

在vim命令模式下,输入 qa 开始进行宏录制,再按 0 跳到行首、按下 i 键进入插入模式,再输入 System.out.println( 后按下 esc 键退回到命令模式,再输入 A 跳转到行尾、按下 i 键进入插入模式, 输入 ); 后按下 Esc 键回到vim命令模式,按下 q 停止录制宏

最后,把光标移动到下面一行的任意位置输入 @a 即可。操作过程如下图所示:

vim宏录制

对应按键顺序为:

qa 0 i System.out.println( Esc A ); Esc q @a j @a j @a

二、修改宏

可以使用以下方式修改vim寄存器a中的宏:
(1) 先按 G 跳转到文件末尾,然后按 o 新加一行后直接用 ESC 退出到命令模式

(2) 使用命令 "ap 将寄存器a中的命令宏粘贴到当前位置,然后编辑这一行的宏内容,编辑结束后用 0 回到行首

(3) 使用命令 "ayy 将当前行的内容复制到寄存器a中,达到修改寄存器a宏内容的目的

三、保存宏

可以使用linux let 命令给寄存器赋值达到保存特定宏内容到指定寄存器的目的。

例如,let @a="0iSystem.out.println(^[A);^[" 将上述的操作命令保存到寄存器a,然后可以用 @a 命令使用刚刚制作的宏

嗯,扫一扫就可以找到小女子我啦~