VIM + JSLint?


120

我花时间在vim上,目前正在编写许多JavaScript。我一直在尝试找到一种将JSLint或类似内容集成到vim中的方法,以改善我的编码。有没有人设法做这样的事情?

编辑:

尝试了以下操作:不幸的是,从Vim进行Javascript语法检查,输出非常粗糙。

Answers:


34

您可以按照JSLint Web服务+ VIM集成的指示进行操作,也可以执行我所做的操作:

下载http://jslint.webvm.net/mylintrun.jshttp://www.jslint.com/fulljslint.js 并将它们放在您选择的目录中。

然后将以下行添加到mylintrun.js的开头:

var filename= arguments[0];

并将mylintrun.js(“ print(...)”)的最后一行代码更改为:

 print ( filename + ":" + (obj["line"] + 1) + ":" + (obj["character"] + 1) + ":" + obj["reason"] );

这使mylintrun.js中输出的错误列表可与VIM快速修复窗口(:copen)一起使用。

现在在VIM中设置以下内容:

set makeprg=cat\ %\ \\\|\ /my/path/to/js\ /my/path/to/mylintrun.js\ %
set errorformat=%f:%l:%c:%m

您必须将/ my / path / to / js更改为SpiderMonkey的路径,并将/my/path/to/mylintrun.js更改为放置JS文件的路径。

现在,您可以在VIM中使用:make并使用quickfix窗口(:he quickfix-window)在错误之间跳转。


为什么要添加缓冲区并将其作为参数传递给mylintrun?
jamessan

@jamessan:mylintrun.js脚本从stdin读取文件。这就是目的。对于错误输出,mylintrun.js还需要文件名,因此将其作为参数给出。您可以修改脚本以打开文件以供读取,而不是从stdin中读取(从而无需使用cat)。但是我不想为此烦恼...我相信,如果您有一个不带FileObject编译的JavaScript引擎,则读取文件时会出现问题
f3lix 2010年

什么是“路径SpiderMonkey的”你的机器上-我有矿上的几个
弗兰肯斯坦博士

我找不到mylintrun.js,那里还有其他位置。它似乎已经死了
bluekeys 2012年

1
到mylintrun.js和fulljslint.js的链接已断开,这使此答案变得无用,因为它严重依赖于它们。请您更新可用的网址吗?否则,我将需要删除此答案,因为它看起来不错,并且对很多人都有帮助,这真是令人讨厌。谢谢。
2012年

187

IMO的最佳做法是:

  1. 安装Syntastic Vim插件 -围绕多种语言的最佳语法检查器,此外,它还与Vim的location-list(== quickfix)窗口集成在一起。
  2. 选择以下两个选项之一:

杰林特

  1. jsl使用您喜欢的软件包管理器(Ubuntu的apt-get,Mac的brew等)安装(JSLint可执行文件)。

社区驱动的jshint.com(优于JSLint)

  1. 使用您喜欢的程序包管理器安装node.js。
  2. 安装Node Package Manager:'curl https://npmjs.org/install.sh | sh' 编辑:npm现在是node.js的一部分
  3. 全局安装jshint:'npm install jshint -g'
  4. 将jshint 配置文件放在$ HOME目录中:'〜/ .jshintrc'
  5. 文件覆盖Syntasticsyntax_checkers/javascript.vim文件- 编辑:不再需要最新的语法版本。

请享用!:)


1
我现在尝试一下。尝试克隆Syntastic并使用“ rake install”命令,然后将javascrip.vim文件替换为您的文件。:SyntasticEnable仍然不知道如何使用它,据我所知没有做任何事情。我会继续尝试的..
克拉斯·莫格伦

2
好的,请注意Syntastic要求ballon_eval,MacVim不支持wich。太糟糕了..
克莱斯·莫格伦

1
尝试添加它,希望它(或它的更漂亮的版本)被拉到 github.com/scrooloose/syntastic/pull/47
Claes Mogren

9
我花了很长时间试图弄清楚为什么什么都没发生……如果您拉开Ory的.jshintrc,请注意,在“ predef”对象中,“ google”后面有一个逗号,导致jshint无法加载和默默地失败。
ThePants 2012年

1
JSL的Windows:javascriptlint.com/download.htm同时,要小心在这个问题上的jsl.vim文件:vim.1045645.n5.nabble.com/...
安德鲁


6

使用node-lint感到非常高兴

sudo npm -g install jslint

然后在你的某处重击 .vim

set makeprg=jslint\ %
set errorformat=%-P%f,
        \%E%>\ #%n\ %m,%Z%.%#Line\ %l\\,\ Pos\ %c,
        \%-G%f\ is\ OK.,%-Q

现在,:make将运行jslint。错误显示在快速修复窗口中。


3

以下是更新于2012年十一月在Mac OS的说明假定您已经家酿安装才能得到的Node.js,并且您已经安装了Syntastic Vim的(我用https://github.com/carlhuda/janus这自动提供):

$ brew install node.js
$ npm install -g jshint

然后将“ / usr / local / share / npm / bin”添加到您的PATH中(可能在〜/ .bashrc中)。例如,添加以下行: export PATH="$PATH:/usr/local/share/npm/bin"

重新启动终端并检查

$ jshint

可从命令行执行。Syntastic将自动发现jsHint。重新启动MacVim并享受!


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.