.
命令会重复上一个修改操作,而 2.
会重复上一个修改操作两次。
但是,如果我想要重复上上个修改操作,应该怎么做呢?在 Vim 中如何实现?
:help .
。然而,你可以为编辑记录一个宏,有很多寄存器可供选择{0-9a-zA-Z"}
(大写字母追加)。
然后使用例如@u
进行编辑1,@t
进行编辑2等。
来自Best of VIM Tips的重要录制提示。" Recording (BEST TIP of ALL)
qq # record to q
your complex series of commands
q # end recording
@q to execute
@@ to Repeat
5@@ to Repeat 5 times
qQ@qq : Make an existing recording q recursive *N*
" editing a register/recording
"qp :display contents of register q (normal mode)
<ctrl-R>q :display contents of register q (insert mode)
" you can now see recording contents, edit as required
"qdd :put changed contacts back into q
@q :execute recording/register q
查看这些内容以获取更多有关重复的提示:
:& last substitute
:%& last substitute every line
:%&gic last substitute every line confirm
g% normal mode repeat last substitute
g& last substitute on all lines
@@ last recording
@: last command-mode command
:!! last :! command
:~ last substitute
:help repeating
我编写了RepeatLast.vim插件来解决这个需求。它提供了一个5\.
键绑定,用于重复最近的5次更改(包括移动),以及2\D
用于放弃/忘记最后的2个动作。
它通过始终启用宏录制来实现工作,这可能不适合每个人。但是,如果您可以接受这一点,在99%的使用情况下它都可以正常工作。
最新版本:https://github.com/joeytwiddle/RepeatLast.vim(请反馈!)
注意事项:
请
:set ch=2
,以便输出的第一行不会被“recording”消息隐藏。它无法按预期工作的1%的时间通常是由于:
- 难以缓慢触发CursorHold事件而不失去快速重复的击键
- 在用户响应提示时不希望记录[Space]和[Enter]键。
在长期内,训练您的q
肌肉以预先记录宏可能是更好的方法。 ;-)
qdda"q
注意命令以q开头和结尾。第二个字符是寄存器,本例中为d
表示删除。但我们也可以使用任何字母或数字来表示寄存器。剩余的字符da"
则是我们的命令。
使用宏
现在我们已经录制了宏,可以通过使用@符号后跟寄存器来调用它:
@d
重复上一个宏命令
要再次使用最近调用的宏命令:
@@
非相关信息:
在这个例子中,我们使用了"da"
,它代表删除一个被引用的字符串。(如果您想要删除引用字符串内部的所有内容,但不包括引号本身,可以使用"di"
来代替)
没错!你可以在 Vim 中做到这一点!
Vim 最有用的功能之一是其能够记录您键入的内容以供以后播放。这对于无法轻松使用 . 完成的重复性工作非常有用。
开始录制
停止录制
播放您的按键/录制
参考资料