我有一个make项目使用各种后端创建二进制文件... →C,C ++,csharp,java ...在linux上使用 mono csharp编译器,gcc等...
如果我选择一个后端(例如csharp),打开一个XXX.cs文件,而不是make-output-error解析器工作正常...这意味着错误输出被正确解析,我可以跳转到马上错误......
如果我选择toplevel make ...(在顶层目录上打开没有文件的vim)比make-output-error解析器不正常工作。
我发现 vim errorformat 变量在1和2之间发生了变化。
现在我的问题是:如何在运行顶级make时告诉vim从C,C ++,CSharp ......和Java中识别错误输出?
答案 0 :(得分:0)
对于C#,无论使用哪种文件类型插件,都可能会更改:help 'errorformat'
的值以使用C#编译器,而在运行顶级make
时保留默认值,我认为输出错误按原样,没有任何过滤。
为了让Vim正确解释所有编译器的潜在混合输出,您可以:
errorformat
设置为适用于所有格式的值,第一个选项,找到每个编译器使用的errorformat
值,并在启动时将它们添加到默认值:
set errorformat^=<efm for c#>
set errorformat^=<efm for cpp>
...
第二种选择,我多年来一直在思考编写一个能够做到这一点的程序,但从未找到时间来编写README.md
。如果不存在这样的事情,你必须自己sed
和awk
自己的方式。