TextMateからVIM
に切り替えています。 INSERTモードの^+W
が非常に便利であることがわかりました。ただし、カーソルの前のWordだけでなく、カーソルの後または周りのWordも削除したいと思います。
私はいくつかのグーグルをしましたが、私が見つけることができる唯一のことは、^+W
がWord BEFOREカーソルを削除することでした。
一連のコマンドの特定のキーのimapを作成する必要があります。この場合、コマンドは通常モードにドロップし、現在のWordを削除してから挿入します。
:imap <C-d> <C-[>diwi
ノーマルモード:
daw : delete the Word under the cursor
caw : delete the Word under the cursor and put you in insert mode
ただdaw
だと思う
daw - delete a Word
以下は通常モードで動作します:ダンオルソンの回答に同意します。ほとんどの削除ではおそらく通常モードであるはずです。詳細は以下をご覧ください。
カーソルがWord内にある場合:diw
は、Wordで削除します(スペースは含まれません)daw
は、Wordの周りを削除します(次のWordの前にスペースが含まれます)。
カーソルがWordの先頭にある場合は、dw
を押すだけです。
これは、移動のための通常の数字を追加することで乗算できます。 2ワード進むと2ワード進むため、d2wは2ワードを削除します。
挿入モード^ w
Vimでの移動にhjklを使用するというアイデアは、ホームロウに手を入れる方が生産性が高いということです。 Wordの最後に^ wを使用すると、Wordをすばやく削除できます。挿入モードに入ったら、テキストを入力し、矢印キーを使用して、ホームローの哲学に反するWordの途中で終了するようにします。
通常モードでWordを変更する場合は、完全に変更する場合は、c
(削除)ではなくd
(変更)を使用できます。単語を入力し、i
を押すことなく入力モードに戻り、入力に戻ります。
どういう意味ですか?
dw
挿入モードでbuilt-inを実行する方法がないように見えますが、これが問題でした。他の回答のいくつかは、通常モードでは正しいですが、カスタムマッピングを作成して挿入モードで機能を追加できることを指摘しています。
正直なところ、ほとんどの削除は通常モードで行う必要があります。 ^ Wについては気に入らないが、escよりも通常モードに移行して、より強力な削除コマンドを自由に使用できる状況を考えることができるかどうかわからない。
Vimは、この点で他の多くのエディター(TextMateを含む)とは大きく異なります。生産的に使用している場合は、おそらく挿入モードであまり時間をかけないことに気付くでしょう。
通常モードで、2つの空白の間のall文字を削除するには:
daW
Wordを1つだけ削除するには:
daw
カーソルが置かれているWord全体を削除するには、diw
を使用します
カーソルが置かれているWord全体を削除し、挿入モードにするにはciw
を使用します
Word全体を削除したくないが、dw/cw
である場所から削除したい場合
残念ながら、挿入モードにはそのようなコマンドはありません。 VIMでは、カーソルの下のWord全体を削除するには、NORMALモードでviwd
と入力します。つまり、「V isual-block I nner W ord D elete」 。大文字のW
を使用して、句読点を含めます。
Wordを削除する方法はたくさんあるので、それらを説明しましょう。
編集すると仮定します:
foo-bar quux
そして、カーソルが「bar」の「a」にあるときにコマンドを呼び出します。
foo-bquux # dw: letters then spaces right of cursor
foo-quux # daw: letters on both sides of cursor then spaces on the right
foo- quux # diw: letters on both sides of cursor
foo-bquux # dW: non-whitespace then spaces right of cursor
quux # daW: non-whitespace on both sides of cursor then spaces on the right
quux # diW: non-whitespace on both sides of cursor
カーソルの前の特定の量の文字を削除するには、Xを使用できます。カーソルの後に特定の数のwordsを削除するには、dwを使用できます(複数の単語は、3ワードの3dwを使用して削除できます例)。一般にカーソルの周りを削除するには、dawを使用できます。
「前」と「後」の使用法については正確にはわかりませんが、試してみましたか
dw
?
編集:挿入モードで使用するものを探していると思います。奇妙なことに、ドキュメントには何も見つかりません。ctrl-wがすべてのようです。
2つのマッピングを作成して、挿入モードと挿入モードの一貫性を確保しました。
:map <'Key of your choice'> caw
:imap <'Key of your choice'> <'Esc'> caw
古いviでは、b
はカーソルの前のワードの先頭にカーソルを移動し、w
はカーソルの後にワードの先頭にカーソルを移動し、e
はカーソルの最後にカーソルを移動しますカーソルとdw
の後の単語は、カーソルから単語の末尾までを削除します。
wbdw
と入力すると、カーソルがWordの先頭または末尾にある場合でも、カーソルの周囲のWordを削除します。 Wordの後の空白は、削除されるWordの一部と見なされることに注意してください。
単語の削除を繰り返すと、受け入れられた答えが失敗します。代わりに次の解決策を試してください。
" delete current Word, insert and normal modes
inoremap <C-BS> <C-O>b<C-O>dw
noremap <C-BS> bdw
CTRL-BackSpaceをマップし、通常モードでも動作します。
カーソルの前の単語だけでなく、カーソルの後またはカーソルの周りの単語も削除したいと思います。
その場合、OPによって提案されたソリューション(つまり、<c-w>
を使用)を受け入れられた回答と組み合わせて、以下を与えることができます。
inoremap <c-d> <c-o>daw<c-w>
代わりに(より短いソリューション):
inoremap <c-d> <c-o>vawobd
サンプル入力:
Word1 Word2 Word3 Word4
^------------- Cursor location
出力:
Word1 Word4