2009-09-04 9 views
86

私は、現在の単語の残りの部分を削除し、挿入モードに入るCtrl + Eを打つことができます。Vimで単語を削除して挿入モードに入る方法は?ノーマルモードでは

カーソルの位置に関係なく(単語の中で)単語全体を削除します。また、どのように私は現在の単語をデフォルトのレジスタにあるものに置き換えることができますか? 2番目の質問については

答えて

146

カーソルを置いている単語を削除するには、「ciw」と入力して「内部単語を変更」を使用します。

"inner"と "a"コマンドはVimで素晴らしいですし、また{}ブロック内で "ci {"を試してみてください。これらのコマンドを英語に翻訳してよりよく記憶するためには、 "内部を変更{ブロック}"と "{ブロックを変更する" http://vimdoc.sourceforge.net/htmldoc/motion.html#text-objects

+0

" ciw "は同じ機能の代わりに" caw "を使用できます。 – Amjith

+0

'caw'と 'ciw'は単語全体を置き換えますが、単に 'cw'は現在のカーソル位置から現在の単語の終わりに変更されます。 –

+0

私は、 "co {"を "ca {"に言ってから、jinxed_codersのコメントを思い出して答えを編集しました。私の古いカスタマイズは、 "(a)<>"コマンドを "(o)uter <>"コマンドとして実装しています。 – Kaali

8

bPldw

この意志は、順番に、次の文字(過ぎてあなたを取るに移動し、カーソルの前に、デフォルトのレジスタを挿入して、現在の単語の先頭にあなたを取ります挿入したテキストの最後)を入力し、残りの単語を削除します。

+5

これは、単語の後のスペースも削除します。 'bPlde'でなければなりません。 – 0x89

+9

いいえ、 'viwp'である必要があります – aehlke

2

ドキュメントまたは、あなたは、おそらく現在の単語を削除し、INSERTモードに入るようにキーシーケンスbdwiを使用することができます。あなたのフォローアップの質問に

+1

'bcw'を使って現在の単語の先頭に移動し、単語を変更すると、挿入モードになります。 –

+0

カーソルがすでに単語の最初の文字にある場合は、前の単語が削除されます。 –

+3

@WarrenPenaその場合は、 'dwi'を使用してください。 DWIはほとんどの州で違法であるため、警官が気付かないように注意してください。 –

18

回答:最初の質問についてはviwp

v -> start visual mode 
iw -> select the 'inner word' 
p -> paste - in visual mode it replaces the visually selected text. 
+2

これを何回連続して行うのですか?貼り付けるたびに、バッファーに貼り付けた単語が塗りつぶされます。 –

+1

@BenGartnerこれを[Vim Tips wiki]で見つけました(http://vim.wikia.com/wiki/Replace_a_word_with_yanked_text#Alternate_method):現在の単語をコピーするには 'yiw'を使い、置換する単語にカーソルを置いて' ciw 0 '。その後、カーソルを次の単語に置き、 '.'を使って置換えをやり直すことができます。 – siegi

+0

@BenGartnerあなたがしようとしているのは、WORD_AのすべてのインスタンスをWORD_Bに置き換えるだけなら、単にvimのexモード、 ':%s/a/b/g'を使うだけです。 'a'は正確なテキストまたは正規表現であり、' b'は 'a'のすべての一致を置き換えるものです。 vimの '/'モードで正規表現をテストすることができます。すべての行を置換したくない場合は、 '%'を行番号または範囲に置き換えます。 –

2

bcwも働きます。それは、 "b単語の先頭にack、c hange w ord"を意味します。しかし、私はciwが "c hange i nner w ord"を意味する、もっと記憶に残っていると思います。

「貼り付けを使用して置き換える」という2番目の質問では、私の解決策は"_diwPです。それはdエレテinner w ordあなたは気にしないレジスタに、pはデフォルトのレジスタの内容です。利点は、汚染されていないため、デフォルトのレジスタを何度も貼り付けることができることです。それはlitte複合体なので、私はそれをnnoremap ,r "_diwPとしてマップします。

関連する問題