17

Vimの元に戻るは少し粗すぎると思います。たとえば、次のように入力した場合:

a // to go into edit mode
to be or not to ve
<esc> // to exit insert mode

おっと!タイプミスをしました。元に戻したいので、を押しuますが、その後、行全体がクリアされます。単語ごとまたは文字ごとに元に戻す方法はありますか?

4

4 に答える 4

25

で元に戻すことができます:help i_ctrl-g_u。必要に応じてすべてのキャラクターにこれをマップできますが、少し複雑になる可能性があります。これをスペースボタンにマッピングする方法です。

:inoremap <Space> <Space><C-g>u

その後、すべての単語を元に戻すことができますu

于 2010-12-05T18:26:44.637 に答える
10

いいえ、それは不可能ですし、実際には必要ありません。Vim にはそれを処理する方法が無数にあります。cbたとえば、試してみてください。またはbC。またはbrb。またはTspaceの代わりにジャンプして戻りますb。またはciw

もちろん、これらのソリューションのほとんどを挿入モード (CTRLo最初に押す) で使用したり、お気に入りのキーの組み合わせ (:help map:help imap) にバインドしたりできます。

于 2010-05-24T08:15:40.417 に答える
10

あなたが求めているものは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" が一致します)

于 2010-05-24T09:33:56.673 に答える
9

Linuxでは、control-w入力モードでwhileを使用すると、最後の「単語」が削除されます。

于 2010-05-24T08:38:21.220 に答える