使用make project调用多个编译器时,vim errorformat出错

使用make project调用多个编译器时,vim errorformat出错,vim,makefile,mono,Vim,Makefile,Mono,我有一个使用各种后端创建二进制文件的make项目… → 在Linux上使用C语言、C语言、C++语言、CQA+、java……使用单声道的CpHARP编译器、GCC等… 如果通过打开XXX.cs文件选择单个后端(例如csharp),则使输出错误解析器正常工作…这意味着错误输出被正确解析,我可以立即跳转到错误 如果我选择toplevel make…(在toplevel目录中打开vim而不使用文件),则make输出错误解析器不会正常工作 我发现vimerrorformat变量在1之间变化。二, 现在我

我有一个使用各种后端创建二进制文件的make项目… → 在Linux上使用C语言、C语言、C++语言、CQA+、java……使用单声道的CpHARP编译器、GCC等…
  • 如果通过打开XXX.cs文件选择单个后端(例如csharp),则使输出错误解析器正常工作…这意味着错误输出被正确解析,我可以立即跳转到错误

  • 如果我选择toplevel make…(在toplevel目录中打开vim而不使用文件),则make输出错误解析器不会正常工作

  • 我发现vimerrorformat变量在1之间变化。二,


    现在我的问题是:我如何告诉VIM来识别C,C++的错误输出,CSharp…和Java在运行顶级make时?

    无论您为C#提供什么文件类型插件,都可能会更改
    :help'errorformat'
    的值,以使用C#编译器,而在运行顶级
    make
    时,您将保留默认值,我假设它会按原样输出错误,而不进行任何过滤

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

    • errorformat
      设置为适用于所有这些格式的值
    • 或者在构建过程中添加一个步骤,将每个本机输出格式统一到一个Vim可以轻松解释的格式中
    第一个选项,找到每个编译器使用的
    errorformat
    值,并在启动时将其前置为默认值:

    set errorformat^=<efm for c#>
    set errorformat^=<efm for cpp>
    ...
    
    设置错误格式^=
    设置错误格式^=
    ...
    

    第二种选择是,我多年来一直在考虑编写一个程序,它可以做到这一点,但我甚至没有时间编写
    README.md
    。如果这样一个东西不存在,你将不得不
    sed
    awk
    你自己的方式,恐怕。

    一个过滤器就可以了…因为过滤器可以在任何地方使用…这意味着每个构建过程…make或单个编译器…都会通过这个错误文件器进行过滤,并且输出会被规范化。