vim の greplace プラグインを使用していますが、検索で括弧をエスケープする方法がわかりません。
Cookie[:parent] を検索したいのですが、試してみました:
:Gsearch cookies[:parent] # returns nothing
:Gsearch cookies\[:parent\] # returns nothing
これをどのように行う必要がありますか?
ありがとう
試す
Gsearch cookies\\\[:parent\\\]
また
Gsearch 'cookies\[:parent\]'
。私が正しく理解していれば、 gets stringによって:grep!
呼び出されたシェル(grepprgオプションにデフォルト値があると仮定)、したがって、エスケープは、globの拡張を防ぐためにエスケープするためのものであると考えるシェルによって解釈されます。しかし、シェルによって行われたグロブの後、grepは引数をパターンとして受け取るので、grepに対してもそれをエスケープする必要があります。そのため、ここに3つのバックスラッシュがあります。2つはgrepにバックスラッシュを取得させ、3つ目はグロブの拡張を防ぐためです。:Gsearch
grep -n cookies\[:parent\] /dev/null
[
:Gsearch cookies\\\[:parent]
私のために働きます。
:Gsearch にはパターンに加えてファイル マスクが必要であることを思い出してください。実際には、:Gsearch \\\[:parent] *.php
検索するファイルを指定するには、次のようなものを入力する必要があります。
:Gsearch cookies\[:parent]
[ は文字クラスの開始であるため、エスケープする必要があります。] は特に特別なものではないので、エスケープする必要はありません。