8

出力を cscope から Vim クイックフィックス ウィンドウにリダイレクトしたい。接着部分は簡単ですが、現在エラーフォーマットで立ち往生しています。cscope 出力の例を次に示します (cscope -L -1 bar):

Format: "filename scope linenumber sourceline"
Example: "abc.cpp foo 25 bar()"

これは、foo() の内部で、abc.cpp の 25 行目に bar() への呼び出しがあることを意味します。

efm = %f\ %*[^\ ]\ %l\ %m動作しますが、スコープ情報は失われます。例えば:

Input: "abc.cpp foo 25 bar()" becomes
Output: "abc.cpp |25| bar()"

私が望むのは、次のように、クイックフィックス ウィンドウにスコープを含めることです。

Input: "abc.cpp foo 25 bar()" becomes
Output: "abc.cpp |25| bar() inside foo()"

errorformat のみでこれを行うことは可能ですか、それとも Vim に出力する前に出力を操作するスクリプトを作成する必要がありますか?

4

1 に答える 1

9

をいじる代わりに、通常のコマンドerrorformatを設定して使用するだけです。例えば。(vimヘルプから)cscopequickfix:cscope

:set cscopequickfix=s-,c-,d-,i-,t-,e-

編集

次のようなフィルターを使用して、フィールドを並べ替えることもできます

sed -e 's/^\([^ ]\+\) \([^ ]\+\) \([^ ]\+\) \(.*\)$/\1 \3 \4 inside \2/'

メッセージをフィルタリングするように設定してから、efm

errorformat=%f\ %l\ %m
于 2011-07-13T15:11:32.093 に答える