Vimの元に戻るは少し粗すぎると思います。たとえば、次のように入力した場合:
a // to go into edit mode
to be or not to ve
<esc> // to exit insert mode
おっと!タイプミスをしました。元に戻したいので、を押しu
ますが、その後、行全体がクリアされます。単語ごとまたは文字ごとに元に戻す方法はありますか?
で元に戻すことができます:help i_ctrl-g_u
。必要に応じてすべてのキャラクターにこれをマップできますが、少し複雑になる可能性があります。これをスペースボタンにマッピングする方法です。
:inoremap <Space> <Space><C-g>u
その後、すべての単語を元に戻すことができますu
いいえ、それは不可能ですし、実際には必要ありません。Vim にはそれを処理する方法が無数にあります。cbたとえば、試してみてください。またはbC。またはbrb。またはTspaceの代わりにジャンプして戻りますb。またはciw。
もちろん、これらのソリューションのほとんどを挿入モード (CTRLo最初に押す) で使用したり、お気に入りのキーの組み合わせ (:help map
と:help imap
) にバインドしたりできます。
あなたが求めているものはVi(AFAIK)には存在しません。
元に戻すは、最後のアクションを元に戻します。最後のアクションが挿入モードに入り、行を追加してから挿入モードを終了した場合。これは元に戻されますが、デフォルト モードで「x」キーを押すと 1 文字が削除されるか、ビジュアル モードでテキストが選択されている場合はテキストが削除されます。元に戻すを押すと、その 1 文字または選択されたテキストが復元されます。
...これをアクションと考える必要があります。アクションはアトミックに元に戻したり復元したりできます。
前に述べたように、前の単語を削除したい場合は、挿入モードのまま Ctrl + w を押して前の単語を削除できるはずです。
挿入モードを終了すると、"b" で単語を後ろに移動 (モーション) し、"w" で単語を "e" で単語の最後まで進め、"c" でカット (挿入モードのまま) できます。 」または「d」で削除します。カットと削除の両方のアクションは、それらに続くモーションを受け入れることができるため、現在の単語を削除したり、「dw」で次の単語まで削除したり、「cb」で前の単語をカットしたりできます。
この概念は、「.」を使用することを覚えていると、より便利になります。コマンド(通常モード)。このコマンドは、最後のアクションを繰り返すことです。私はこれを何度も使用して、ファイル内の単語の小さなグループを見つけて置換しました (変更しすぎることに偏執的である場合は特に便利です)。シナリオは次のようになります。
ファイル:
これは私の投稿です
本当にそれはテストです
これは真ん中です
これで終わりです
「is」を「was」に置き換えたい場合は、次のように記述できます: %s/\<is\>/was/g
ただし、1 行目と 3 行目の「is」を「was」に変更したい場合 (行番号がわからなかったので、他に変更したい場所があるかどうかを確認したかったのは、to was I 「/is」と入力できます
置き換えたい場所に到達するまで「n」を押してから、「cw」を押して「was」と入力します。置き換えたい別の場所に到達するまで「n」を押して「.」を押すと、「」が置き換えられますis" with "was" (注: 私の検索文字列は "is" という単語に限定されませんでした。"is" の 2 文字だけなので、この場合は "This" と "this" が一致します)
Linuxでは、control-w入力モードでwhileを使用すると、最後の「単語」が削除されます。