Vim では、 を使用すると.
、最後の通常モード コマンドを繰り返すことができます。例:
dd.
行を2回削除します。
しかし、次のように入力すると
5j.
カーソルが 10 行下に移動しません。最後の通常モード コマンド、特に移動を繰り返すにはどうすればよいですか?
答え1
これは通常の vim でも実行可能ですが、繰り返し実行できるようにするにはキー入力が少し多く必要になるため、適用性は使用事例、つまり、どのくらいの頻度で繰り返す必要があるかによって異なります。
オプション1: コマンドモード操作に変更する
5 行下に移動することを例にすると、次の操作を実行できます。
- Enterを押す
:norm 5j
とカーソルが5行下に移動します @:
動きを繰り返すために使用する
:norm
は標準を意味し、その後に続く文字列は通常モードでのキーストロークとみなされます
オプション2: マクロを使用する
qa
(マクロをレジスタに格納します。 、a
のように独自のレジスタを選択することもできますqb
)qc
5j
q
(マクロの記録を終了)@a
記録した操作を繰り返すには(a
選択したレジスタ名に置き換えます。例@b
:@c
)
マクロを設定するにはより多くの精神的な力が必要ですが、最新の操作によって上書きされることなく、複数の操作を異なるレジスタに保存できるという意味で、より繰り返し可能です。
答え2
vim
残念ながら、これはできません。できる最善のことは、レプモカウントを持つ移動コマンドを繰り返すプラグイン。
答え3
を使用すると、変更を繰り返すことができます.
。 コマンドを使用すると、移動を繰り返すことができます;
。このコマンドは新しいようで、他の回答で言及されている repmo.vim スクリプトと同様の機能を実行します。
たとえば、2 番目の次の に移動するにはc
、 を押します2fc
。もう一度同じ操作を行うには、 と入力します;
。
答え4
変更したい行を選択し、最後の通常のドットコマンドを実行します。
v5j .............. visual select next 5 lines
:'<,'>norm! . normal mode execute over selection last command '.'