我正在尝试将以下错误与efm
匹配:
AssertionError: 1 == 2
at /home/strager/projects/blah/blah.js:13:37
错误信息可以是任何内容(即它不总是与
AssertionError: .*
或.*Error: .*
格式匹配)。一般格式如下:errormessage
at filename:line:column
我的问题是错误消息匹配了任何行;我需要将错误消息限制在一行之内,并且只有在匹配的“at”行后才匹配。
我尝试使用以下efm
:
set efm=%Z\ \ \ \ at\ %f:%l:%c,%E%m
" %Z at %f:%l:%c,%E%m
这个几乎可行,但它除了错误之外还匹配状态行(例如错误前后的非错误)。 我该如何强制
%E%m ... %Z
总共只有两行(一个是错误消息,一个是 at
行)? 如果需要,我可以使用标准 UNIX 工具来进行 makeprg
。
:set makeprg=...
。也就是说,无论您使用的是什么程序作为makeprg
,都可以将其替换为此脚本。 - Andrewuse warnings;
替换了-w
开关。-w
开关几乎只在与不支持词法警告的 Perl 5.5 兼容时需要,但由于您的脚本使用了open
语法,因此无论如何都需要 5.6 版本。(实际上,由于使用了//
, 它需要 5.10+ 版本。) - melpomene