web-dev-qa-db-ja.com

Vimのドットコマンド、最後の変更?

Vimのdotコマンドは「最後の変更」を繰り返しますが、何が「最後の変更」を構成するのか正確にはわかりません。たとえば、シーケンスを入力すると、次のようになります。

A; {ESC} j。

次に、現在の行にセミコロンが追加されますが、もう一度「j」と入力する必要があります。

つまり、ドットマクロは「A; {ESC}」のみを実行するため、ESCが「最後の変更」の終了を定義しているようです。 「j」も含まれていないのはなぜですか?

1
Tyler Durden

変更とは、現在のバッファ内のテキストを変更するコマンドです。 :help change.txtの下にリストされているすべてのコマンドがあります。挿入モードでは、変更は継続的に入力される文字のシーケンスにさらに制限されます。つまり、カーソルキーを使用してナビゲートする場合(移動しないでください)、最後に入力された部分のみが繰り返されます。

jのようなコマンドはmotions;つまり、テキストには影響せず、カーソルを移動するだけです。それらは繰り返されないです。複数の変更、または移動と変更の組み合わせを繰り返す場合は、ステップをマクロ(例:qaA;<Esc>jq)に記録します。次に、それを繰り返します(@a)。

4
Ingo Karkat