我的vimgrep搜索不符合我的预期

时间:2010-09-09 16:20:52

标签: vim vimgrep

我正在执行以下vimgrep搜索(在vim(!)中)....

:vimgrep /^\s*bool\s\+\i\+\s*=\s*\(false\)\|\(true\);\s*$/      *[files....]*

为了在我的代码中找到bool变量初始化。它成功返回所有bool初始化,例如

bool result1 = false;

bool result2=true;

但它也会返回指定bool(未初始化)的其他行,例如

result = true;

(即即使在行的开头没有找到bool,它也会返回行。)

如果有人能告诉我为什么它匹配代码,那么在行的开头没有“bool”类型说明符,我将不胜感激。

非常感谢,

史蒂夫。

1 个答案:

答案 0 :(得分:7)

:vimgrep /^\s*bool\s+\i+\s*=\s*(false)\|(true);\s*$/ [files....]
                                 ^     ^^^^   ^

你有一些问题,都标有:

  1. Vim使用\(...\)对原子进行分组,而不是(...)看起来这就是SO解析器问题(\(没有附带反复产生{{1} }})。
  2. 你应该在括号内加(\|,或者将它作为«找到布尔变量初始化为假(\(false\|true\)部分)的行或者一行包含^\s*bool\s+\i+\s*=\s*\(false\),后跟行尾的分号(true部分)»。