web-dev-qa-db-ja.com

VIMのカーソルの後または周りのWordを削除します

TextMateからVIMに切り替えています。 INSERTモードの^+Wが非常に便利であることがわかりました。ただし、カーソルの前のWordだけでなく、カーソルの後または周りのWordも削除したいと思います。

私はいくつかのグーグルをしましたが、私が見つけることができる唯一のことは、^+WがWord BEFOREカーソルを削除することでした。

194
Mantas

一連のコマンドの特定のキーのimapを作成する必要があります。この場合、コマンドは通常モードにドロップし、現在のWordを削除してから挿入します。

:imap <C-d> <C-[>diwi
74
Whaledawg

ノーマルモード:

daw : delete the Word under the cursor    
caw : delete the Word under the cursor and put you in insert mode 
507
Amjith

ただdawだと思う

daw - delete a Word
97
steve

以下は通常モードで動作します:ダンオルソンの回答に同意します。ほとんどの削除ではおそらく通常モードであるはずです。詳細は以下をご覧ください。

カーソルがWord内にある場合:
diwは、Wordで削除します(スペースは含まれません)
dawは、Wordの周りを削除します(次のWordの前にスペースが含まれます)。

カーソルがWordの先頭にある場合は、dwを押すだけです。

これは、移動のための通常の数字を追加することで乗算できます。 2ワード進むと2ワード進むため、d2wは2ワードを削除します。

挿入モード^ w
Vimでの移動にhjklを使用するというアイデアは、ホームロウに手を入れる方が生産性が高いということです。 Wordの最後に^ wを使用すると、Wordをすばやく削除できます。挿入モードに入ったら、テキストを入力し、矢印キーを使用して、ホームローの哲学に反するWordの途中で終了するようにします。
通常モードでWordを変更する場合は、完全に変更する場合は、c(削除)ではなくd(変更)を使用できます。単語を入力し、iを押すことなく入力モードに戻り、入力に戻ります。

66
Andy

どういう意味ですか?

dw
42
Nadia Alramli

挿入モードでbuilt-inを実行する方法がないように見えますが、これが問題でした。他の回答のいくつかは、通常モードでは正しいですが、カスタムマッピングを作成して挿入モードで機能を追加できることを指摘しています。

正直なところ、ほとんどの削除は通常モードで行う必要があります。 ^ Wについては気に入らないが、escよりも通常モードに移行して、より強力な削除コマンドを自由に使用できる状況を考えることができるかどうかわからない。

Vimは、この点で他の多くのエディター(TextMateを含む)とは大きく異なります。生産的に使用している場合は、おそらく挿入モードであまり時間をかけないことに気付くでしょう。

20
Dan Olson

通常モードで、2つの空白の間のall文字を削除するには:

daW

Wordを1つだけ削除するには:

daw 
20
krmld

カーソルが置かれているWord全体を削除するには、diwを使用します
カーソルが置かれているWord全体を削除し、挿入モードにするにはciwを使用します
Word全体を削除したくないが、dw/cwである場所から削除したい場合

12
Naseeruddin V N

残念ながら、挿入モードにはそのようなコマンドはありません。 VIMでは、カーソルの下のWord全体を削除するには、NORMALモードでviwdと入力します。つまり、「V isual-block I nner W ord D elete」 。大文字のWを使用して、句読点を含めます。

5
mycelo

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
4
0xF

カーソルの前の特定の量の文字を削除するには、Xを使用できます。カーソルの後に特定の数のwordsを削除するには、dwを使用できます(複数の単語は、3ワードの3dwを使用して削除できます例)。一般にカーソルの周りを削除するには、dawを使用できます。

2
John T

「前」と「後」の使用法については正確にはわかりませんが、試してみましたか

dw

編集:挿入モードで使用するものを探していると思います。奇妙なことに、ドキュメントには何も見つかりません。ctrl-wがすべてのようです。

2
innaM

2つのマッピングを作成して、挿入モードと挿入モードの一貫性を確保しました。

:map <'Key of your choice'> caw

:imap <'Key of your choice'> <'Esc'> caw

2
userFog

古いviでは、bはカーソルの前のワードの先頭にカーソルを移動し、wはカーソルの後にワードの先頭にカーソルを移動し、eはカーソルの最後にカーソルを移動しますカーソルとdwの後の単語は、カーソルから単語の末尾までを削除します。

wbdwと入力すると、カーソルがWordの先頭または末尾にある場合でも、カーソルの周囲のWordを削除します。 Wordの後の空白は、削除されるWordの一部と見なされることに注意してください。

2
mouviciel

単語の削除を繰り返すと、受け入れられた答えが失敗します。代わりに次の解決策を試してください。

" delete current Word, insert and normal modes
inoremap <C-BS> <C-O>b<C-O>dw
noremap <C-BS> bdw

CTRL-BackSpaceをマップし、通常モードでも動作します。

2
R. Aguirre

カーソルの前の単語だけでなく、カーソルの後またはカーソルの周りの単語も削除したいと思います。

その場合、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
0
Sergio