9

%tVim のクイックフィックス リストにある書式指定子についてはよくわかりません。クイックフィックス バッファの動作/表示にどのような影響がありますか?

次のテストファイルでそれを見つけようとしました:

$ cat test.out
foo              Error         1 foo.h            foobar
bar              Error         2 foo.h            foobar
foobar           Warning       3 foo.h            foobar
barfoo           Warning       4 foo.h            foobar

そして、errorformat最初に次のことを行います。

set errorformat+=%.%#%*\\s%.%#%*\\s%l\ %f%*\\s%m

これを使用すると、 の行番号をerrorformat使用:cgetfile test.outしてジャンプできますfoo.hが、次のようになりますerrorformat

set errorformat+=%.%#%*\\s%t%.%#%*\\s%l\ %f%*\\s%m

変更されたのは、クイックフィックスバッファーの行番号の後にいくつかのスペースが表示されるようになったことだけです。たとえば、(1 の後に 2 つのスペース)

foo.h|1  | foobar

それ以外の

foo.h|1| foobar

だから私は2つの質問があります:

  1. 私の何が問題なのerrorformatですか?
  2. エラーの種類を抽出できる場合はどうすればよいですか?
4

3 に答える 3

8

Vim のクイックフィックス リストの %t フォーマット指定子についてよくわかりません。クイックフィックス バッファの動作/表示にどのような影響がありますか?

これは、一致したエラーのタイプ (エラー、警告、または情報) をクイックフィックス バッファーに伝えます。クイックフィックス バッファーは、行番号の後にその情報を表示し、別の色で強調表示します。たとえば、次の警告とエラーがあります。

hosts.cfg|3473 error| Could not add object property
hosts.cfg|3790 warning| Duplicate definition found for host 'mailgateway'

クイックフィックス ウィンドウでは、「警告」という単語は黄色で、「エラー」という単語は赤地に白で表示されます。私のエラーフォーマットでは、E または W がエラーまたは警告になる %t を使用しています。例えば:

%trror: %m in file '%f' on line %l
于 2011-01-26T22:00:29.357 に答える
5

これは実際にはあなたの質問に対する答えではありませんが、私が自分で使用する代替ソリューションです。個人的には、errorformat システムが複雑すぎると感じており、代わりに、make コマンドの出力をパイプする、実際の関数の出力によって供給される一般的な非常に単純な errorformat を使用しています。私はこれを使用します: "%f\ %l\ %c\ %m". これらのエラー解析関数は python で記述しますが、サポートされているスクリプト言語のいずれか、または vimL で行う必要があります。これの論理は、そのような関数はデバッグがはるかに簡単で、vim の外部で使用でき、(少なくとも私にとっては) errorformat 文字列を作成するよりも速く書くことができるということです。

于 2010-12-10T02:20:26.803 に答える
2

%tが使用されている場合、quickfix.txt で次の例を見つけました。

Examples
The format of the file from the Amiga Aztec compiler is:
filename>linenumber:columnnumber:errortype:errornumber:errormessage

filename    name of the file in which the error was detected  
linenumber  line number where the error was detected  
columnnumber    column number where the error was detected  
errortype   type of the error, normally a single 'E' or 'W'  
errornumber number of the error (for lookup in the manual)  
errormessage    description of the error    

This can be matched with this errorformat entry:
%f>%l:%c:%t:%n:%m

おそらくエラーと警告のために、一部のコンパイラがエラータイプを単一文字の E または W に格納しているようです。

一文字なので「警告」や「エラー」とは一致しませんので注意してください。
%t error type (finds a single character)

于 2010-12-10T08:52:50.070 に答える