我的系统上安装了jslint和npm。
它以下列格式生成错误消息:
1 1,9: Missing name in function statement.
function() {
2 2,11: Use '===' to compare with '0'.
if (x == 0) {
3 4,2: Unnecessary semicolon.
};
我为Vim编写了一个编译器插件来解析错误消息,但我无法弄清楚errorformat
的问题。我现在在编译器文件中有以下内容:
CompilerSet makeprg=jslint
\\ $*
\\ %
CompilerSet errorformat=
\%*[\ ]%n\ %l\,%c:\ %m,
\%-G%.%#
哪个AFAIK应该执行以下操作:
%*[\ ]
- 跳过行尾的空白%n
- 匹配错误编号\
- 跳过空格%l
- 匹配行号\,
- 跳过逗号%c
- 匹配列号:
- 跳过冒号\
- 再次跳过该空间%m
- 匹配错误消息,
- 新行%-G%.%#
- 跳过所有其他人它运行显示消息的jslint
,但:clist
命令不显示任何错误。
我错过了什么?
答案 0 :(得分:1)
问题在于\,
,跳过逗号,正确的格式为:
CompilerSet errorformat=
\%*[\ ]%n\ %l%.%c:\ %m,
\%-G%.%#
答案 1 :(得分:0)
逗号必须使用\\,
进行转义,因为,
是errorformat中的特殊字符,而\
是vim配置文件中的特殊字符,必须对其进行转义。
对于vim,您的错误格式为%*[ ]%n %l\,%c: %m,%-G%.%#
,因为行开头的\
或空格之前的{{1}}是vim的转义,而不是错误格式。