在 Vim 中重複上一個正常模式指令,包括移動

在 Vim 中重複上一個正常模式指令,包括移動

在 Vim 中,使用.,我可以重複最後一個正常模式命令;例如:

dd.

刪除一行兩次。
但是,如果我輸入

5j.

遊標不會向下移動 10 行。如何重複上一個正常模式指令,尤其是移動?

答案1

即使在普通 vim 中也是可行的,但適用性取決於您的用例,即。您需要多久重複一次,因為它需要更多的擊鍵才能使其可重複。


方案一:轉為指令模式操作

以向下移動 5 行為例,您可以執行以下操作:

  1. 輸入:norm 5j,會將遊標向下移動 5 行
  2. 用於@:重複動作

:norm代表Normal,後面的任何字串都被視為你在正常模式下的按鍵


選項 2:使用巨集

  1. qa(將巨集儲存到暫存器中a,您可以選擇自己的暫存器,例如qbqc
  2. 5j
  3. q(巨集錄製完成)
  4. @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 '.'

相關內容