vim 宏录制
录制和回放操作序列,自动化重复编辑任务
语法
q[register] ... q / @[register]
参数
| 参数 | 说明 | 示例 | 级别 |
|---|---|---|---|
qa |
开始录制宏到寄存器 a | qa |
常用 |
q |
停止录制 | q |
常用 |
@a |
回放寄存器 a 的宏 | @a |
常用 |
@@ |
重复上一次回放的宏 | @@ |
常用 |
10@a |
回放宏 10 次 | 10@a |
进阶 |
示例
录制并回放
qa → 操作序列 → q → @a
qa 开始录制,q 结束,@a 回放
批量添加引号
qa0i"Esc$a"Escjq → 99@a
给每行首尾加引号
批量格式化
qaI// Escjq → 10@a
给 10 行添加注释前缀
递归宏
qadd@aq → @a
删除所有行直到文件末尾
常见错误
宏执行到一半停了
宏遇到错误会停止,确保操作在所有目标行都有效(如用 0 回到行首而非 ^)
技巧
- 录制前先手动执行一遍确认操作正确
- 宏存在寄存器中,可以用 "ap 粘贴出来编辑后 "ayy 存回去
- 用 :normal @a 可以在选区的每一行执行宏