jslint vim errorformat

时间:2011-05-03 13:57:27

标签: vim compiler-construction jslint errorformat

我的系统上安装了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命令不显示任何错误。

我错过了什么?

2 个答案:

答案 0 :(得分:1)

问题在于\,,跳过逗号,正确的格式为:

CompilerSet errorformat=
    \%*[\ ]%n\ %l%.%c:\ %m,
    \%-G%.%#

答案 1 :(得分:0)

逗号必须使用\\,进行转义,因为,是errorformat中的特殊字符,而\是vim配置文件中的特殊字符,必须对其进行转义。 对于vim,您的错误格式为%*[ ]%n %l\,%c: %m,%-G%.%#,因为行开头的\或空格之前的{{1}}是vim的转义,而不是错误格式。