検索でスラッシュをエスケープし、長い文字列を置き換える代替手段


10

文字列内のすべての特殊文字をエスケープする必要がある以外に、文字列のvim検索と置換に代替手段はありますか?

たとえば、次の文字列を照合して何かに置き換えたい場合

[ERROR] Login unsucessful

それから私はしなければなりません

:%s/\[ERROR\]\ Login\ unsucessful/something/g

そして、多くの特殊文字を含む複雑な文字列の場合、それはより醜く、苦痛になります

私は何かしたいです

:%s/"[ERROR] Login unsucessful"/something/g

すべての脱出を回避します。このような機能はありますか?

回答:


16

very-nomagicスイッチを使用できます。詳細:h \Vについては、を参照してください。これはあなたに与えるでしょう%s/\V[ERROR] Login unsuccessful/something/g。の軽量バージョンであり、広く使用されていないように見えるnomagicスイッチもあります。\M\V

また、を使用しない場合でも、例のようにスペースをエスケープする必要がないことに注意してください\V


ありがとう。まさに私が欲しかったもの。私のグーグル検索でこれを取得できませんでした。理由はわかりません。
MohitC 2016年

2
@MohitC私はマップ/するために/\v、私がマッピングされているので、ほとんどの検索には、「非常に魔法」有効に//する/(修飾子を無視して検索履歴を通過するために有用)未修正の検索を開始すると/v/して/\Vすぐに検索のためのすべての魔法をオフにします。
カイルストランド

@MohitC実際には、すべてのコンテキストで「非常に魔法」を可能な限り一貫して使用するためにプラグインも使用しているため、私のセットアップはそれよりも複雑です。ここで私の答えを参照してください
カイルストランド

7

スペースをエスケープする必要はありません。したがって、この:

:%s/\[ERROR\]\ Login\ unsucessful/something/g

実際には:

:%s/\[ERROR\] Login unsucessful/something/g

そしてもちろん、非常にnomagicの「モード」を有効して、これらの特殊文字の特殊性を低くすることができます。

:%s/\V[ERROR] Login unsucessful/something/g

を参照してください:help /magic


2

nomagicフラグに加えて、他の回答で言及しています。

検索文字列を正確にする必要がない場合がよくあります

たとえば、一致する

[ERROR] Login unsucessful

あなたは式を使うことができます

.ERROR. Login unsucessful

明らかに、目的のターゲットとは異なるが式に一致する他の文字列がデータに含まれないことを知っておく必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.