使用make project调用多个编译器的vim errorformat错误

时间:2018-06-02 07:37:30

标签: vim makefile mono

我有一个make项目使用各种后端创建二进制文件... →C,C ++,csharp,java ...在linux上使用 mono csharp编译器,gcc等...

  1. 如果我选择一个后端(例如csharp),打开一个XXX.cs文件,而不是make-output-error解析器工作正常...这意味着错误输出被正确解析,我可以跳转到马上错误......

  2. 如果我选择toplevel make ...(在顶层目录上打开没有文件的vim)比make-output-error解析器正常工作。

  3. 我发现 vim errorformat 变量在1和2之间发生了变化。

    现在我的问题是:如何在运行顶级make时告诉vim从C,C ++,CSharp ......和Java中识别错误输出

1 个答案:

答案 0 :(得分:0)

对于C#,无论使用哪种文件类型插件,都可能会更改:help 'errorformat'的值以使用C#编译器,而在运行顶级make时保留默认值,我认为输出错误按原样,没有任何过滤。

为了让Vim正确解释所有编译器的潜在混合输出,您可以:

  • errorformat设置为适用于所有格式的值,
  • 或在构建过程中添加一个步骤,将每个本机输出格式统一为Vim可以轻松解释的单一格式。

第一个选项,找到每个编译器使用的errorformat值,并在启动时将它们添加到默认值:

set errorformat^=<efm for c#>
set errorformat^=<efm for cpp>
...

第二种选择,我多年来一直在思考编写一个能够做到这一点的程序,但从未找到时间来编写README.md。如果不存在这样的事情,你必须自己sedawk自己的方式。