2016-09-14 10 views
2

私は単純にmake -C ..を呼び出すローカルMakefileを持っています。結果として、私はファイル名とディレクトリを持つコンパイラからの出力を..を基準にして取得します。vim他のディレクトリへのソースへの相対パスのベースを変更

vimはquickfixの正しいパスを取得できません。

Q:vim quickfixのベースパスを..に設定するにはどうすればよいですか?

私のパス構造:私は内部コンパイル

<bla>/base/proj1/<localMakeFile> 
<bla>/base/<globalMakefile> 
<bla>/src/source1.cpp 

/ベース/ PROJ1/

エラーの

コンパイラの出力が似ている: のsrc /てsource1.cpp | 141 COL 54 |エラー:....

しかし、私はで働いています /PROJ1 /ので、vimのsrc/source1.cpp

がEDITファイルを取得することができません:私は、問題は基本的にはGNUの出力に関連していることがわかり が

を作るに
make[4]: Entering directory '<bla>/...' 

私は英語環境を使用しないと正しく解析されません。 export LANG=でシェルを設定すると問題なく動作します。

Q:vimでgnu makeのドイツ語出力も解析できますか?

+2

もっと便利な答えをするために何をしているのかについて十分な詳細は述べていませんが、 ':h quickfix-directory-stack'を読んでみてください。 –

+0

@SatoKatsuraあなたのコメントは、どの情報が欠落しているかわかりません。パスstrcuture、言語、make、vim ...何が欠けていますか? – Klaus

答えて

0

set errorformat+=<localized version>のローカライズ版を追加すると効果があります。

VIMがそのままサポートしていることに気づいていません。

errorformat=%*[^"]"%f"%*\D%l: %m,"%f"%*\D%l: %m,%-G%f:%l: (Ea 
ch undeclared identifier is reported only once,%-G%f:%l: for ea 
ch function it appears in.),%-GIn file included from %f:%l:%c:, 
%-GIn file included from %f:%l:%c\,,%-GIn file included from %f 
:%l:%c,%-GIn file included from %f:%l,%-G%*[ ]from %f:%l:%c,%-G 
%*[ ]from %f:%l:,%-G%*[ ]from %f:%l\,,%-G%*[ ]from %f:%l,%f:%l: 
%c:%m,%f(%l):%m,%f:%l:%m,"%f"\, line %l%*\D%c%*[^ ] %m,%D%*\a[% 
*\d]: Entering directory %*[`']%f',%X%*\a[%*\d]: Leaving direct 
ory %*[`']%f',%D%*\a: Entering directory %*[`']%f',%X%*\a: Leav 
ing directory %*[`']%f',%DMaking %*\a in %f,%f|%l| %m 

...と

make: Entering `<directory>` 

make: Entering directory `<directory>` 

からビルドプロセスの出力を変更することで...私のマシン上で怖いです:set errorformatの出力、を見た後、

私はそれがこのようなerrorformatを拡張することによって動作するようになった:

:set errorformat+=%D%*\\a:\ Entering\ %*[`']%f' 
+1

あなたの 'errorformat'は、多くのもの、典型的にはプラグイン、コンパイラセット、または' ftplugin'ファイルによって設定できます。適切な場所でそれを無効にする必要があります(特に、OPの問題の説明が役に立たない理由です)。また、 'errorformat'の文の順序が実際に違いを生むことがあるため、ローカライズされたバージョンを追加するだけでは機能しません。 –

+0

@SatoKatsura発言のおかげで - 私はOPの質問に類似したシナリオを設定し、この場合には動作することを証明するために追加します。それに応じて答えを更新しました。 – leo

関連する問題