2012-04-18 8 views
1

vim用のgreplaceプラグインを使用していますが、検索時に括弧をエスケープする方法がわかりません。vim:gsearch(greplaceプラグイン)エスケープ文字

私はクッキーを検索したい[親]と試してみました:

:Gsearch cookies[:parent] # returns nothing 
:Gsearch cookies\[:parent\] # returns nothing 

がどのように私はこれを行うべきか?

おかげ

答えて

1

:Gsearch cookies\\\[:parent]が私に役立ちます。

Gsearchにはパターンに加えてファイルマスクが必要なので、実際には:Gsearch \\\[:parent] *.phpなどと入力して、検索するファイルを指定することをお勧めします。

+0

ありがとう、私はファイルマスクを使用していただけでここに入力していません。私は助けに感謝します。 – codedmart

0
:Gsearch cookies\[:parent] 

[文字クラスのスタートなので、エスケープする必要があります。特別なものではないので、エスケープする必要はありません。

+0

まだ結果は表示されません。 – codedmart

+1

これは必須ではありませんが、 '\]'はメタ文字ではなく、どちらも ']'です。 – ZyX

2

Gsearch cookies\\\[:parent\\\] 

または

Gsearch 'cookies\[:parent\]' 

を試してみてください。私が正しく理解していれば、:grep!によって呼び出されたシェルは、:Gsearchという文字列がgrep -n cookies\[:parent\] /dev/null(grepprgオプションはデフォルト値を持つと仮定します)を取得し、glob展開を防ぐためにエスケープすると考えるシェルによって解釈されます。しかし、シェルで行われたグロブの後に、grepはパターンとして引数を取るので、grepのためにそれをエスケープする必要もあります。なぜなら、3つのバックスラッシュがあります.2つはgrepにバックスラッシュを与え、3つはグロブ展開を防ぐことです。