【问题标题】:How to do JSLint in VimVIM + JSLint?
【发布时间】:2010-10-03 04:12:26
【问题描述】:

我每天都在 vim 中度过,目前正在编写大量 JavaScript。我一直在尝试找到一种方法将 JSLint 或类似的东西集成到 vim 中以改进我的编码。有没有人设法做这样的事情?

编辑:

试过这个:Javascript Syntax Checking From Vim,不幸的是输出很粗糙。

【问题讨论】:

    标签: javascript vim lint


    【解决方案1】:

    IMO 的最佳实践方式是:

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

    JSLint

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

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

    1. 使用您最喜欢的包管理器安装 node.js
    2. 安装节点包管理器:'curl https://npmjs.org/install.sh | sh' 编辑:npm 现在是 node.js 的一部分
    3. 全局安装 jshint:'npm install jshint -g'
    4. 将您的 jshint config 文件放入您的 $HOME 目录:'~/.jshintrc'
    5. this one 覆盖 Syntasticsyntax_checkers/javascript.vim 文件 - 编辑:使用最新的 SYNTASTIC 版本不再需要。

    享受吧! :)

    【讨论】:

    • 我现在正在尝试。尝试克隆 Syntastic 并使用“rake install”命令,然后用你的替换 javascrip.vim 文件。仍然无法弄清楚如何使用它, :SyntasticEnable 就我所见没有做任何事情。不过我会继续努力的..
    • 好的,注意到 Syntastic 需要 ballon_eval,MacVim 不支持。太糟糕了..
    • 尝试添加它,希望它(或它的更漂亮的版本)被拉取github.com/scrooloose/syntastic/pull/47
    • 我只是花了很长时间试图弄清楚为什么似乎没有发生任何事情...如果您拉出 Ory 的 .jshintrc 请注意“predef”对象中的“google”后面有一个尾随逗号这会导致 jshint 无法加载和 Syntastic 静默失败。
    • jsl for Windows: javascriptlint.com/download.htm 另外,请在 jsl.vim 文件中注意这个问题:vim.1045645.n5.nabble.com/…
    【解决方案2】:

    您可以按照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 快速修复窗口 (: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:mylintrun.js 脚本从标准输入读取文件。所以这就是猫的用途。对于错误输出 mylintrun.js 还需要文件名,因此它作为参数给出。您可以修改脚本以打开文件进行读取,而不是从标准输入读取(使 cat 变得不必要)。但我不想为此烦恼......而且我相信如果你有一个没有 FileObject 编译的 JavaScript 引擎,那么读取文件会有问题
    • 你机器上的“通往 SpiderMonkey 的路径”是什么 - 我有几个
    • 我无法访问 mylintrun.js,是否有其他位置。它似乎已经死了
    • mylintrun.js 和 fulljslint.js 的链接被破坏,这使得这个答案变得不太有用,因为它严重依赖它们。请问您可以更新工作网址吗?否则,我将需要删除这个令人讨厌的答案,因为它看起来相当不错并且帮助了很多人。谢谢。
    【解决方案3】:

    另一个选项是来自 Jesse Hallet 的 jslint.vim。它可以在 GitHub 上找到,可以使用或不使用 Vim 的 QuickFix 窗口。不错的插件!

    【讨论】:

    • 为此 +1。效果很好。可从vim.org/scripts/script.php?script_id=2729 方便地下载。请注意,在 Windows 上,您需要安装 Ruby。
    • 另外一定要看看JSHint,下面会提到。
    • 项目不再处于开发阶段。
    【解决方案4】:

    我很高兴使用 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。快速修复窗口中出现错误。

    【讨论】:

      【解决方案5】:

      这是 2012 年 11 月更新的 Mac OS 说明。假设您已安装 Homebrew 以获取 Node.js,并且您已经安装了 Syntastic for 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,尽情享受吧!

      【讨论】:

        【解决方案6】:

        更好的是通过 Lynx 管道处理结果,以处理 JSLint 不幸地选择 HTML 作为输出格式。我在这里有一篇关于如何操作的博客文章:

        http://www.fleegix.org/articles/2008-09-06-jslint-in-vim-through-lynx

        【讨论】:

          猜你喜欢
          • 2011-08-17
          • 2011-04-12
          • 2011-01-15
          • 2012-02-24
          • 2011-11-18
          • 2014-08-15
          • 2017-07-25
          • 2012-03-30
          • 1970-01-01
          相关资源
          最近更新 更多