1

我在我的系统上安装了带有 npm的jslint 。

它产生以下格式的错误消息:

  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命令不显示任何错误。

我错过了什么?

4

2 回答 2

1

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

CompilerSet errorformat=
    \%*[\ ]%n\ %l%.%c:\ %m,
    \%-G%.%#
于 2011-05-03T14:38:28.687 回答
0

逗号必须转义,\\,因为,是错误格式中的特殊字符,并且\是 vim 配置文件中的特殊字符,它本身必须被转义。对于 vim,您的错误格式是 then %*[ ]%n %l\,%c: %m,%-G%.%#,因为\行首或空格之前的 是 vim 的转义,而不是错误格式。

于 2014-08-29T08:56:51.537 回答