vim宏录制核心是“记录→回放”,按qa开始录到寄存器a,执行^iTODO:Escj等操作,@a回放,:reg查看,qqq清空,支持嵌套调用如@a含@b。

vim 的宏录制是处理重复编辑任务最高效的方式之一,核心在于“记录→回放”,操作简单但威力强大。
开始录制宏:按 q + 字母键
按下 q 后,紧接着输入一个字母(如 a),表示将操作记录到寄存器 a 中。此时状态栏会显示 recording。之后你做的每一个普通模式命令(移动、删除、插入、替换、跳转等)都会被逐条记下。注意:不能在插入模式里输入大量文字再退出——宏记录的是按键动作,不是最终文本内容;所以建议用 i 进入插入 → 快速输入 → Esc 退出,这样才可复现。
- 比如想给每行开头加
TODO:,可录:^iTODO:Escj(回到行首→插入→退出→下行) - 避免在录制中使用鼠标或方向键(应改用 hjkl 或 w/$ 等)
- 中途想停止录制,再按一次 q
回放宏:用 @ + 字母键
录制完成后,把光标移到要应用的位置,按 @a(假设录在寄存器 a)即可执行一次。想重复执行 5 次?直接输 5@a。宏会严格按录制时的相对操作执行,所以光标初始位置很关键——通常建议先跳到第一处目标位置再回放。
- 若某次回放出错(比如某行结构不同),可用 u 撤销,调整光标后重试
- 想连续执行直到文件末尾?可配合 100@a(足够大的数字),或用可视模式选中多行后按 :normal @a
查看与编辑已录制宏
宏本质是存在寄存器里的按键序列。用 :reg a 可查看寄存器 a 的内容(例如显示为 ^ITODO^[j,其中 ^[ 是 Esc)。如果发现录错了,可以手动编辑:
- 先用 "ay 把当前内容复制到寄存器 a(方便备份)
- 再用 qqq 清空寄存器 a(即重新开始录制并立刻停止)
- 然后用 "ap 粘贴原内容到缓冲区,修改后再 "ay 存回 a
进阶技巧:嵌套与组合宏
宏可以调用其他宏。比如先录 @b 做格式化,再录 @a 包含 @b 和换行操作。也可以把多个小宏组合成一次性流程:
- 录制 b 宏:f,x(删掉冒号后的第一个字符)
- 录制 a 宏:0f:@bj(行首找冒号→执行 b→下行)
- 这样 @a 就自动处理整列匹配项

















