vi は現在検索されている文字列を置き換えます。

vi は現在検索されている文字列を置き換えます。

グローバルまたは選択した範囲で文字列を検索して置換する方法を知っています。

*しかし、私は単語をナビゲートし、クリックしてその単語を検索する習慣があります。これは文字列という単語を検索するだけでなく、検索文字列が部分文字列である他の文字列も無視します。したがって、検索は\<word\>ちょうどword

*これで、検索と置換コマンドのために単語を再入力する必要なく、単語をクリックしてその文字列で検索され、強調表示されたすべての項目を置き換えることができるようになります。良い提案がありますか?

答え1

テキスト例:

cat
concatenate
scat
dog and cat

最初の行を押すと*パターンが検索されます。\<cat\>

検索と置換中に検索文字列を空白のままにすると、最後に一致したパターンが再利用されるため、次の手順を実行します。

:%s//CAT/g

結果は次のとおりです。

CAT
concatenate
scat
dog and CAT


~から:h :substitute

代替コマンドの{pattern}が空の場合、そのコマンドは以前の代替コマンドまたはコマンドのパターンを使用します:global。存在しないが以前の検索パターンがある場合は、そのパターンが使用されます。 [r]フラグを使用すると、このコマンドは以前の:global置換または検索コマンドのパターンを使用します。


単語全体ではなくテキストの一部のみを検索する*ようにテキストを視覚的に選択する動作を変更するには、次の手順を実行します。#

vnoremap * y/<C-R>"<CR>
vnoremap # y?<C-R>"<CR>

答え2

.fromg*の代わりに使用できます。*:help gstar

g*          Like "*", but don't put "\<" and "\>" around the word.
            This makes the search also find matches that are not a
            whole word.  {not in Vi}

g#          Like "#", but don't put "\<" and "\>" around the word.
            This makes the search also find matches that are not a
            whole word.  {not in Vi}

次に、次を使用します。

:%s//replacement/g

@Sundeepが提案したように。

関連情報