我正在为 vim 使用 greplace 插件,但不确定如何在搜索中转义括号。
我想搜索 cookies[:parent] 并尝试过:
:Gsearch cookies[:parent] # returns nothing
:Gsearch cookies\[:parent\] # returns nothing
我应该怎么做?
谢谢
尝试
Gsearch cookies\\\[:parent\\\]
或者
Gsearch 'cookies\[:parent\]'
. 如果我理解正确,:grep!
则由:Gsearch
获取字符串调用的 shell 调用grep -n cookies\[:parent\] /dev/null
(假设 grepprg 选项具有默认值),因此您的转义由认为它们用于转义[
以防止全局扩展的 shell 解释。但是在 shell grep 完成 globbing 之后,将参数作为一种模式,所以你也需要为 grep 转义它,这就是为什么我在这里有三个反斜杠:两个是让 grep 得到一个反斜杠,第三个是为了防止 glob 扩展。
:Gsearch cookies\\\[:parent]
为我工作。
请记住 :Gsearch 除了模式之外还需要一个文件掩码,因此实际上,您可能希望输入类似:Gsearch \\\[:parent] *.php
或其他内容来指定要搜索的文件。
:Gsearch cookies\[:parent]
[ 是字符类的开始,因此需要转义。] 不是特别特殊,因此不需要转义。