回答:
の定義を探していますundo-blocks
。
通常、1つの元に戻すコマンドは、そのコマンドが何回変更されても、入力したコマンドを取り消します。この一連の取り消し可能な変更は、取り消しブロックを形成します。したがって、入力されたキーが関数を呼び出すと、関数内のすべてのコマンドが一緒に取り消されます。
同じブロックがに使用されredo
ます。から:h redo
:
最後の変更が記憶されます。上記の取り消しおよびやり直しコマンドを使用して、テキストを各変更前の状態に戻すことができます。変更を再度適用して、元に戻す前にテキストを戻すこともできます。
Vimのモーダル編集は、しばしばと見ているオペレータ(例えばc
、d
、...)の上に適用される運動を(例えばiw
、w
、}
、...)。すばらしい副産物として、Vimは大きなアンドゥを行います。他の編集者が多くの小さな取り消しを取り消しブロックにするために推測する必要があるのに対して、Vimはこれを自然に行います。別の副作用として、これは繰り返し演算子.
(ドットコマンド)を提供します。
あなたの質問は特にキーストロークに言及しているので、挿入モードで小さな変更を元に戻す方法を知りたいと思います。答えは、これは「Vimの方法」ではないということです。「The Vim Way」は、一度に短いバーストの挿入モードになることを意味します。これは、挿入モードでミスがあった場合、通常モードを終了してテキストを修正するか、元に戻す、、u
およびテキストを書き換えるだけの場合が多いことを意味します。
挿入モードのときに、元に戻すブロックを分割する必要がある場合があります。これは<c-g>u
、挿入モードで実行できます。:h :undoj
および:h undo-blocks
を参照してください。
さらにヘルプが必要な場合は、以下をお勧めします。
:h undo-blocks
:h :undoj
:h undo-tree
:h persistent-undo
:h undo.txt
このテーマに関するいくつかのスクリーンキャストもあります。
このように考えることもできます。挿入モードでテキストを編集し、を押すたびにEscブロックが形成されます。そのブロックを取り消そうとすると、挿入モードに入る前に同じ位置に移動します。
したがって、挿入モードを時々終了するだけで、変更を「保存」できます。挿入モードに移動して関数を作成するとしましょう。コーディングを続けて次の機能に進むこともできますが、通常モードに戻って挿入モードに切り替えることが望ましい場合があります。そのようにして、簡単な方法でコードを構造化することができ、戻る必要がある場合は、どの位置で終わるかを知ることができます。
注:移動に矢印を使用する場合、Esc+ [ hjkl] を押した場合と同様です
CTRL-G u
挿入モードのコマンドを使用して、単一の元に戻すブロックを手動で分割することもできます。これは、挿入モードマクロがある場合に便利です。