![在 Vim 中重复上一个正常模式命令,包括移动](https://linux22.com/image/1316479/%E5%9C%A8%20Vim%20%E4%B8%AD%E9%87%8D%E5%A4%8D%E4%B8%8A%E4%B8%80%E4%B8%AA%E6%AD%A3%E5%B8%B8%E6%A8%A1%E5%BC%8F%E5%91%BD%E4%BB%A4%EF%BC%8C%E5%8C%85%E6%8B%AC%E7%A7%BB%E5%8A%A8.png)
在 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 '.'