Vim errorformat:隐藏带有三个“*”的消息

问题描述 投票:0回答:1

我使用 make 来编译,有时使用 gcc 或 clang。 我有一个函数可以根据编译器更改错误格式。 但我仍然收到与

make
相关的警告,我想忽略它们,或者至少将它们降级为非警告:

make[2]: *** [/buildpath/build.make:519: /path/test.cxx.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:36062: /path] Error 2
make: *** [Makefile:163: all] Error 2

我的 gcc 错误格式:

      \ '%-G%f:%s:,' .
      \ '%-G%f:%l: %#error: %#(Each undeclared identifier is reported only%.%#,' .
      \ '%-G%f:%l: %#error: %#for each function it appears%.%#,' .
      \ '%-GIn file included%.%#,' .
      \ '%-G %#from %f:%l\,,' .
      \ '%f:%l:%c: %trror: %m,' .
      \ '%f:%l:%c: %tarning: %m,' .
      \ '%I%f:%l:%c: note: %m,' .
      \ '%f:%l:%c: %m,' .
      \ '%f:%l: %trror: %m,' .
      \ '%f:%l: %tarning: %m,'.
      \ '%I%f:%l: note: %m,'.
      \ '%f:%l: %m'

vim
运行它时,我正确地得到与
gcc
相关的错误,但仍然有这些
make
警告:

make[2]: *** [/buildpath/build.make:519:/build.make|519 warning| /path/test.cxx.o] Error 1
make[1]: *** [CMakeFiles/Makefile2|36062 warning| /path] Error 2
make: *** [Makefile|163 warning| all] Error 2

我尝试过

-G %#%#%#
来匹配三个星号(
%#
是来自
:help errorformat
的星号)。但我收到一条错误消息:

Neomake error in: function <SNR>166_nvim_exit_handler[6]..<SNR>166_exit_handler[27]..<SNR>166_RegisterJobOutput[16]..<SNR>166_ProcessJobOutput, line 55
Neomake: [2.2:2] Error during output processing for build: Vim(caddexpr):E871: (NFA regexp) Can't have a multi follow a multi !.
vim makefile
1个回答
0
投票

Vim 9.0 patch 1613 开始,类 Unix 操作系统上

errorformat
的默认值已更新为忽略来自 Make 的这些消息。

这些是添加的条目(请注意,您需要转义这些模式中的某些字符才能在

:set
命令或您的
vimrc
中使用它们):

  • %-Gg%\?make[%*\d]: *** [%f:%l:%m
  • %-Gg%\?make: *** [%f:%l:%m

您的尝试(例如

%-G%#%#%#
)不起作用的原因是因为
%#
用于插入正则表达式星号标记
,而不是星号文字,并且因为这些错误格式模式必须匹配整行,而不仅仅是一个子串。

如果有人使用 Windows,您需要自己将模式添加到

errorformat
,如果有人使用
mingw32-make
而不是
make
,您将必须稍微修改模式。我通过将以下行添加到我的
vimrc
:

来做到这一点
  • set errorformat^=%-Gmingw32-make:\ ***\ [%f:%l:%r
© www.soinside.com 2019 - 2024. All rights reserved.