1

我正在为 vim 使用 greplace 插件,但不确定如何在搜索中转义括号。

我想搜索 cookies[:parent] 并尝试过:

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

我应该怎么做?

谢谢

4

3 回答 3

2

尝试

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

或者

Gsearch 'cookies\[:parent\]'

. 如果我理解正确,:grep!则由:Gsearch获取字符串调用的 shell 调用grep -n cookies\[:parent\] /dev/null(假设 grepprg 选项具有默认值),因此您的转义由认为它们用于转义[以防止全局扩展的 shell 解释。但是在 shell grep 完成 globbing 之后,将参数作为一种模式,所以你也需要为 grep 转义它,这就是为什么我在这里有三个反斜杠:两个是让 grep 得到一个反斜杠,第三个是为了防止 glob 扩展。

于 2012-04-19T21:12:42.037 回答
1

:Gsearch cookies\\\[:parent]为我工作。

请记住 :Gsearch 除了模式之外还需要一个文件掩码,因此实际上,您可能希望输入类似:Gsearch \\\[:parent] *.php或其他内容来指定要搜索的文件。

于 2012-04-19T21:55:21.833 回答
0
:Gsearch cookies\[:parent]

[ 是字符类的开始,因此需要转义。] 不是特别特殊,因此不需要转义。

于 2012-04-19T07:36:33.280 回答