在 Vim 中,使用.
,我可以重複最後一個正常模式命令;例如:
dd.
刪除一行兩次。
但是,如果我輸入
5j.
遊標不會向下移動 10 行。如何重複上一個正常模式指令,尤其是移動?
答案1
即使在普通 vim 中也是可行的,但適用性取決於您的用例,即。您需要多久重複一次,因為它需要更多的擊鍵才能使其可重複。
方案一:轉為指令模式操作
以向下移動 5 行為例,您可以執行以下操作:
- 輸入
:norm 5j
,會將遊標向下移動 5 行 - 用於
@:
重複動作
:norm
代表Normal,後面的任何字串都被視為你在正常模式下的按鍵
選項 2:使用巨集
qa
(將巨集儲存到暫存器中a
,您可以選擇自己的暫存器,例如qb
,qc
)5j
q
(巨集錄製完成)@a
重複您錄製的動作(替換a
為您選擇的暫存器名稱,例如@b
,@c
)
巨集需要更多的精神力量來設置,但它更具可重複性,因為您可以將多個操作儲存在不同的寄存器中,而不會被最新的操作覆蓋。
答案2
vim
不幸的是,它沒有這樣做。你能做的最好的事情就是安裝雷普莫.vim插件,它重複有計數的移動命令。
答案3
您可以使用 重複變更.
。可以使用指令重複移動;
。這個命令似乎是新的,並且與其他答案中提到的repmo.vim 腳本執行類似的操作。
例如,要移至下一個c
,請按2fc
。然後要再次執行此操作,只需鍵入;
。
答案4
您可以選擇要變更的行並執行最後一個普通的點命令
v5j .............. visual select next 5 lines
:'<,'>norm! . normal mode execute over selection last command '.'