如何将Vim中dot操作符的内容复制到寄存器中以便后续调用?
保存dot命令到寄存器的方法
Vim 内置了特殊寄存器 .,它存储的就是 dot 操作符对应的最近一次修改操作的内容。你只需要在执行新操作之前,在普通模式下执行如下命令,即可把它的内容复制到自定义寄存器(比如存到寄存器 a):
:let @a = @.
后续你需要调用这个原来的dot命令时,直接在普通模式下按 @a 即可,效果和直接按 . 完全一致,且后续的所有操作都不会覆盖寄存器 a 里存储的内容。
更自然的原生替代方案
如果你提前知道需要复用某段操作,更推荐使用Vim原生的宏功能,比事后保存dot寄存器的适用范围更广:
- 提前录制宏:在普通模式下按
qa开始录制操作序列到寄存器a,完成你需要复用的所有操作后按q结束录制。后续任意时间按@a即可重复执行整段操作,还支持指定重复次数,比如10@a就是连续执行10次,支持任意长度的操作序列,而dot操作符只能存储最近一次的单个修改。 - 如果需要复用的是冒号开头的Ex命令,直接按
q:打开命令历史窗口,找到对应命令按回车即可直接执行,不需要额外保存到寄存器。 - 仅临时需要插入一次其他操作的场景,可以用撤销树实现:执行完临时操作后先按
u撤销临时操作,此时dot寄存器会自动恢复为你原来要保留的命令,执行完原dot操作后再按Ctrl+r恢复刚才的临时操作即可,不需要额外操作寄存器。
内容的提问来源于stack exchange,提问作者piedpiper
相关产品推荐
相关产品推荐

