首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vim errorformat和jslint

Vim errorformat和jslint
EN

Stack Overflow用户
提问于 2010-09-15 05:21:56
回答 5查看 1.4K关注 0票数 5

我试图让makeprg和errorformat与VIM和jslint一起工作,但似乎无法让错误格式适合我的生活……我使用的是jslint的nodejs版本,它会产生如下结果:

代码语言:javascript
复制
1 116,9: The body of a for in should be wrapped in an if statement to filter unwanted properties from the prototype.
    for (var k in o)

我基本上希望匹配行号、列和错误,并使用当前文件作为文件名。有人知道怎么做吗?

需要说明的是,我正在寻找错误格式以使此命令正常工作。目前我的.vimrc文件有

代码语言:javascript
复制
augroup js
    set makeprg=jslint\ %
    set errorformat=%E%>%l,%c:%m,%Z
augroup END

这就是不起作用( jslint运行良好,但错误格式是错误的)...

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-09-16 01:03:17

实际上,今天早些时候我刚刚在我的makeprg中插入了JSLint,自然我需要一些快速修复支持。

我创建了node-jslint的一个分支,它以类似于GCC的格式输出JSLint的错误。efm是:%f:%l:%c:%m。如果你可以使用node.js,我推荐使用node-jslint (特别是如果你正在处理一个node.js/CommonJS项目)。

至于你最初的问题:我不认为%>是必要的。如果删除它没有帮助,可以简单地尝试以下操作:

代码语言:javascript
复制
set efm=%l,%c: %m
票数 2
EN

Stack Overflow用户

发布于 2012-01-03 09:22:11

一个旧的线程,但对于任何遇到它的人,比如我自己:

对于通过npm (v0.1.2)安装的当前版本的node-jslint,错误输出如下所示:

代码语言:javascript
复制
filename.js
 #1 Missing 'use strict' statement.
    y = x // Line 2, Pos 3
 #2 Expected 'y' at column 5, not column 3.
    y = x // Line 2, Pos 3

我使用以下efm来解析错误:

代码语言:javascript
复制
autocmd FileType javascript set efm=%-P%f,
                    \%E%>\ #%n\ %m,%Z%.%#Line\ %l\\,\ Pos\ %c,
                    \%-G%f\ is\ OK.,%-Q
票数 8
EN

Stack Overflow用户

发布于 2012-04-15 23:18:29

一个非常老的线程,但这是@dule's excellent answer的后续。这真的只是一个调整,但它也可能对其他人有用(我花了一些时间使用TFM来解决这个问题,所以为什么不分享呢?):

代码语言:javascript
复制
setlocal makeprg=jslint\ %
setlocal errorformat=%-P%f,
                    \%A%>%\\s%\\?#%*\\d\ %m,%Z%.%#Line\ %l\\,\ Pos\ %c,
                    \%-G%f\ is\ OK.,%-Q

有两个不同之处,都在第三行。首先,我将初始硬编码的单个空格替换为匹配零个或一个空格的模式(即,使空格成为可选的)。我必须这样做,因为jslint的输出如下所示

代码语言:javascript
复制
... First 8 errors trimmed
 #9 Expected '$' at column 9, not column 7.
    $('img#placeholder').attr('src', pic); // Line 15, Pos 7
#10 Expected '$' at column 9, not column 7.
    $('img#placeholder').attr('alt', desc) // Line 16, Pos 7

仔细观察,你就会看到它。对于错误1-9,在行首有一个空格。10...n,没有空格。这是一件很小的事情,但这意味着quickfix窗口对于错误10或更高版本不能正常工作。呃。(顺便说一句,我确实考虑了答案“在任何给定的JS文件中,错误不要超过9个,但这似乎有点”摇尾晃尾“。而且,现在我对scanf的了解比几个小时前更多了。)

第二个不同之处在于,我用%A替换了%E,用一种忽略该数字的模式替换了匹配器%n。这本质上是出于美学的原因。使用@dule的方法,您将在quickfix窗口中获得以下输出:

代码语言:javascript
复制
showPic.js|5 col 7 error   1| Expected 'event' at column 9, not column 7.
showPic.js|9 col 7 error   2| Expected 'var' at column 9, not column 7.

我不想要那里的错误计数,我不需要提醒他们都是错误-我知道这一点。因此,使用%A时,您会得到以下更简单的输出:

代码语言:javascript
复制
showPic.js|5 col 7| Expected 'event' at column 9, not column 7.
showPic.js|9 col 7| Expected 'var' at column 9, not column 7.
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3713015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档