私が使用している(antによって開始された)C++コンパイラは、さまざまな形式でエラーを生成します。例えば:
[適用] /localdev/foo.cc:10:29: エラー: foo.h: そのようなファイルまたはディレクトリはありません
(それをフォーマットAと呼びましょう)
および次のような形式で:
[適用] /localdev/foo.cc:307: エラー: 予想される ';' 「標準」の前
(それをフォーマット B と呼びましょう)
注 フォーマット A には追加の列指定子があります。
両方に一致するvimエラーフォーマットを作成しようとしています。
私は持っている:
set errorformat=\ %#[適用]\ %f:%l:%c:\ error:\ %m
set errorformat+=\ %#[適用]\ %f:%l:\ error:\ %m
しかし、VimをフォーマットBに一致させることはできないようです。
最初の errorformat 設定をコメント アウトするとエラー フォーマット B と一致し、2 番目の errorformat 設定をコメント アウトするとエラー フォーマット A と一致するため、errorformat 自体が正しいことはわかっています
。errorformat 設定を逆にすると、その後、Vim がフォーマット A のエラーに遭遇すると、"/localdev/foo.cc:10" というファイルを開こうとしますが、もちろん見つかりません。(vimには貪欲なマッチングアルゴリズムがあり、この場合、ファイルに一致する文字列には行番号も含まれているようです)。
フォーマット A とフォーマット B の両方に一致する適切な errorformat 設定は何ですか?
%c を「オプション」にする方法について、インターネットと vim のドキュメントを調べましたが、その秘密は見つかりませんでした。
ありがとうございました。