vim中,当需要执行重复操作的时候,你迫切的需要宏,又方便又快速,而且还不容易出错
录制
normal模式下
\\进入宏录制状态,vim编辑器左下角会显示”记录中”或”recording” 寄存器名是指a、b、c等26个英文字母命名的有名寄存器,或0-9等10个数字寄存器 q[reg] q \\在vim宏录制状态下, 结束宏录制
录制的宏记录在寄存器中,假设为a,可以在normal mode下输入@a,执行这个宏,也可以加上执行次数 10@a 执行10次宏
[n]@[reg]
例子:
假设需要在以下文件的每行开头添加“System.out.println(”,行尾添加“);”,可以进行以下操作:
在vim命令行模式下,输入 :qa 开始进行宏录制,再按 0 跳到行首、按下 i 键进入插入模式,再输入 System.out.println( 后按下 esc 键退回到命令行模式,再输入 A 跳转到行尾、输入 ); 后按下 Esc 键回到vim命令行模式,按下 q 停止录制宏
最后,把光标移动到下面一行的任意位置输入 @a 即可
修改宏
- 使用命令 “ap 将寄存器a中的命令宏粘贴到当前位置
- 编辑这一行的宏内容,编辑结束后用 0 回到行首
- 使用命令 “ayy 将当前行的内容复制到寄存器a中,达到修改寄存器a宏内容的目的
let方式修改宏
也可以直接使用let指令,给寄存器赋值,达到设置宏的目的,例如:
:let @a="0iSystem.out.println(^[A);^["
将上述的操作命令保存到寄存器a,然后可以用 @a 命令使用刚刚制作的宏
发表回复