在 Vim 中,使用.
,我可以重复上一个正常模式命令;例如:
dd.
删除一行两次。
但是,如果我输入
5j.
光标不会向下移动 10 行。如何重复上一个正常模式命令,尤其是移动?
答案1
即使在 vanilla vim 中也是可行的,但适用性取决于您的使用情况,即您需要多久重复一次,因为它需要更多的击键才能使其可重复。
选项 1:将其变成命令模式操作
以向下移动 5 行为例,你可以执行以下操作:
- 输入
:norm 5j
,它将光标向下移动 5 行 - 用来
@:
重复动作
:norm
代表正常,任何后续字符串都被视为正常模式下的按键
选项 2:使用宏
qa
(将宏存储到寄存器中a
,您可以选择自己的寄存器,如qb
,qc
)5j
q
(录制宏结束)@a
重复您记录的操作(a
用您选择的寄存器名称替换,例如@b
)@c
宏需要更多的精神力量来设置,但它更具可重复性,因为你可以在不同的寄存器中存储多个操作而不会被最新操作覆盖。
答案2
vim
不幸的是,这不起作用。你能做的最好的就是安装复制代码插件,重复具有计数的移动命令。
答案3
您可以使用 重复更改.
。可以使用 命令重复移动;
。此命令似乎是新的,其功能与其他答案中提到的 repmo.vim 脚本类似。
例如,要移至下一个c
,请按2fc
。然后要再次执行此操作,只需键入;
。
答案4
您可以选择要更改的行并执行最后一个普通点命令
v5j .............. visual select next 5 lines
:'<,'>norm! . normal mode execute over selection last command '.'