2

次のvimgrep検索を実行しています(vim(!)で)...

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

私のコードでbool変数の初期化を見つけるために。すべてのブール初期化を正常に返します。

bool result1 = false;

bool result2=true;

ただし、bool が割り当てられている (初期化されていない) 他の行も返します。

result = true;

(つまり、行頭に bool が見つからない場合でも行を返します)。

行頭に「bool」型指定子がないコードと一致する理由を誰か教えていただければ幸いです。

どうもありがとう、

スティーブ。

4

1 に答える 1

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

いくつかの問題があります。両方ともマークされています:

  1. Vim は\(...\)、 ではなく、アトムをグループ化するために使用し(...)ます。それは SO パーサーの問題だったようです ( \(backtics で囲まれていませんによって生成されます()。
  2. \|かっこ内にある必要があります: \(false\|true\)、または «ブール変数が false として初期化されて^\s*bool\s+\i+\s*=\s*\(false\)いる行 ( part) またはtrue行末にセミコロンが続く行 ( \(true\);\s*$part)» のいずれかを検索します。
于 2010-09-09T16:32:14.867 に答える