在 Vim 中,使用.,我可以重复上一个普通模式命令;例如:
dd.
Run Code Online (Sandbox Code Playgroud)
删除一行两次。
但是,如果我输入
5j.
Run Code Online (Sandbox Code Playgroud)
光标不会向下移动 10 行。如何重复上一个正常模式命令,尤其是移动?
小智 28
即使在 vanilla vim 中也是可行的,但适用性取决于您的用例,即。您需要多久重复一次,因为它需要更多的按键才能使其可重复。
以向下移动 5 行为例,您可以执行以下操作:
:norm 5j,它会将光标向下移动 5 行@:重复动作:norm 代表正常,任何后面的字符串都被认为是你在正常模式下的击键
qa(将宏存储到寄存器中a,您可以选择自己的寄存器,例如qb,qc)5jq (完成录制宏)@a重复您录制的操作(替换a为您选择的注册名称,例如@b,@c)宏需要更多的精神力量来设置,但它更具可重复性,因为您可以将多个操作存储在不同的寄存器中而不会被最新的操作覆盖。
您可以使用 重复更改.。可以使用;命令重复移动。这个命令似乎是新的,并且与其他答案中提到的 repmo.vim 脚本做了类似的事情。
例如,要移至下一个c,请按2fc。然后再次执行,只需键入;。