如何在Vim中进行JSLint

121

我一整天都在使用Vim,目前写了很多JavaScript代码。我一直在尝试找到一种将JSLint或类似工具集成到vim中以提高我的编码能力的方法。有人成功实现了这样的操作吗?

我尝试过这个:从Vim进行JavaScript语法检查,但是输出结果非常简陋。

6个回答

188

我认为最佳实践方法如下:

  1. 安装Syntastic Vim插件 - 适用于许多语言的最佳语法检查器,还可以与Vim的location-list(== quickfix)窗口集成。
  1. 选择以下两个选项之一:

JSLint

  1. 使用您喜欢的软件包管理器(Ubuntu的apt-get,Mac的home brew等)安装jsl(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'
  • 把你的 jshint 配置 文件放在你的 $HOME 目录下:'~/.jshintrc'
  • 这个文件 覆盖 Syntasticsyntax_checkers/javascript.vim 文件 - 编辑:最新版本的 Syntastic 不再需要此步骤。
  • 享受吧! :)


    1
    我现在正在尝试这个。尝试克隆Syntastic并使用“rake install”命令,然后用你的javascrip.vim文件替换它。仍然无法弄清如何使用它,就我所看到的,:SyntasticEnable没有任何作用。不过我会继续努力的。 - Claes Mogren
    2
    好的,注意到Syntastic需要ballon_eval,但它在MacVim中不受支持。太糟糕了... - Claes Mogren
    1
    尝试添加它,希望它(或更漂亮的版本)被拉取 https://github.com/scrooloose/syntastic/pull/47 - Claes Mogren
    9
    我刚花了很长时间试图弄清楚为什么似乎什么也没发生...如果你使用了Ory的 .jshintrc,请注意在 "predef" 对象中的 "google" 后面有一个逗号,这会导致 jshint 无法加载并使 Syntastic 无声地失败。 - ThePants
    1
    jsl for Windows:http://www.javascriptlint.com/download.htm 此外,在jsl.vim文件中要注意此问题:http://vim.1045645.n5.nabble.com/shellescape-doesn-t-work-in-Windows-with-shellslash-set-td1211618.html - Andrew
    显示剩余11条评论

    34

    您可以按照JSLint web-service + VIM integration的说明进行操作,或者像我一样执行以下步骤:

    下载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的quickfix窗口(: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.js文件,是否有其他位置可用?它似乎已经失效。 - bluekeys
    @dsjbirch:尝试这个 https://github.com/anatoliychakkaev/.vim/blob/master/mylintrun.js - f3lix
    我选择了另一种使用Node的方法,我将在回复中概述。 - bluekeys
    现在可以在 github.com/hallettj/jslint.vim 上获取 jslint.vim。尽管它还处于 alpha 版本,但对我来说相当稳定。 - gregoltsov
    1
    mylintrun.js和fulljslint.js的链接已经失效,这使得这个答案变得不太有用,因为它在很大程度上依赖于它们。请问您能否提供可用的URL?否则我将不得不删除这个答案,这真是令人沮丧,因为它看起来相当不错,并且帮助了很多人。谢谢。 - Kev
    显示剩余3条评论

    17

    另一个选项是由Jesse Hallet提供的jslint.vim。它可以在GitHub上获取,且可与Vim的QuickFix窗口一起使用。这是一个很好的插件!


    1
    +1,这很棒。可以从http://www.vim.org/scripts/script.php?script_id=2729方便地下载。请注意,在Windows上您需要安装Ruby。 - mm2001
    3
    请确保查看下文提到的 JSHint,此处已提及。 - Alex Kahn
    该项目已不再继续开发。 - OrangeTux

    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年11月的Mac OS操作说明。假设您已经安装了Homebrew以获取Node.js,并且已经为Vim安装了Syntastic(我使用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并享受吧!


    2

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接