Vim里怎么录下按键操作?三步搞定重复编辑

写代码、改配置、批量处理文本时,总有些操作要反复敲:比如把一列数字全加上引号、把每行开头加个#注释、或者统一替换某个模式。手动一遍遍按太累?Vim早给你备好了「按键录制」功能——不是宏,是真·把你按下的每一个键都记下来,想播就播。

先搞清三个字母:q、寄存器、@

Vim录制靠的是q键,它后面跟一个字母(a-z),代表把操作录进哪个「寄存器」里。比如按qa,就是开始往寄存器a里录;按q结束录制;之后用@a就能回放刚才录的全部动作。

来个真实例子:给10行代码快速加注释

假设你正看一段Python代码,光标在第一行开头:

print('hello')
name = input()
age = int(age)
if age > 18:
  print('adult')

你想给前5行每行开头加# (井号+空格)。不用手敲5次,这样干:

① 把光标移到第一行开头(按0
② 按qa —— 开始录到寄存器a
③ 按i# <Esc>(插入模式输# ,再按Esc退出)
④ 按j(往下跳一行)
⑤ 按q —— 录制结束

现在寄存器a里就存了「输# + 回正常模式 + 下移一行」这一串动作。把光标回到第二行开头,按@a,立刻执行一次;再按@a,又来一次……连按5下,5行全带上了注释。

还能这么玩

● 录完发现按错了?别删重录,直接q再按一次同个字母(比如qa再按qa),新内容会覆盖旧的。
● 想播两遍?写2@a就行;播十遍就是10@a
● 不止能录普通按键,/搜索、c修改、d删除、甚至:s/.../.../g命令都能录进去——只要是你亲手按的,Vim都认。

小提醒

录制时别误触EscCtrl-c退出,那会中断录制;也不要在录制中打开新文件或切窗口,动作只对当前缓冲区有效。另外,寄存器名区分大小写:qaqA是两个独立的录制槽,大写字母(如qA)还能把新操作「追加」到已有寄存器末尾,适合分段录制。

下次看到一堆相似行要改,别急着复制粘贴,试试qa→干活→q@a,两秒搞定十行。