写代码、改配置、批量处理文本时,总有些操作要反复敲:比如把一列数字全加上引号、把每行开头加个#注释、或者统一替换某个模式。手动一遍遍按太累?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都认。
小提醒
录制时别误触Esc或Ctrl-c退出,那会中断录制;也不要在录制中打开新文件或切窗口,动作只对当前缓冲区有效。另外,寄存器名区分大小写:qa和qA是两个独立的录制槽,大写字母(如qA)还能把新操作「追加」到已有寄存器末尾,适合分段录制。
下次看到一堆相似行要改,别急着复制粘贴,试试qa→干活→q→@a,两秒搞定十行。