44

如何使用带有 JSHint 的 Syntastic Vim 插件来验证 JavaScript 代码?

环境:

  • Ubuntu 11.04
  • VIM - Vi 改进版 7.3

按照VIM + JSLint的解决方案,我安装了什么?:

  • 文德尔
  • 节点.js
  • 节点包管理器
  • jshint,全球
  • 通过 Vundle 安装 Syntastic(在 Vim 中使用 :BundleInstall 命令确保安装了 Syntastic。)

.vimrc:

set nocompatible               " be iMproved
filetype off                   " required!

set rtp+=~/.vim/bundle/vundle/
call vundle#rc()

" let Vundle manage Vundle
" required! 
Bundle 'gmarik/vundle'

" My Bundles here:
Bundle 'scrooloose/syntastic'

filetype plugin indent on     " required! 

let g:syntastic_enable_signs=1
let g:syntastic_auto_jump=1
let g:syntastic_stl_format = '[%E{Err: %fe #%e}%B{, }%W{Warn: %fw #%w}]'

set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*

寻找已安装的可执行文件:

$ which gjslint
$ which jslint
$ which jsl
$ which jshint
/home/fernando/local/node/bin/jshint
$ 


$ echo $PATH

>/home/fernando/local/bin:/home/fernando/local/node/bin:/home/fernando/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

$ jshint test.js

test.js:第 3 行,第 1 列,'blbla' 未定义。
test.js:第 4 行,第 1 列,“x”未定义。
test.js:第 4 行,第 5 列,“nonono”未定义。
test.js:第 6 行,第 1 列,“a”未定义。
test.js:第 7 行,第 1 列,“b”未定义。
test.js:第 8 行,第 5 列,“a”未定义。
test.js:第 8 行,第 10 列,“b”未定义。
test.js:第 8 行,第 7 列,预期为 '===' 而看到的是 '=='。

8 个错误

$ vi test.js -- no error message shown

:SyntasticEnable -- Vim exits and restarts, opening the same file, but still no message

:w -- still no error message

:Errors -- the location list opens but it is empty

jshint 和 Syntastic 似乎都已安装,但可能缺少一些东西。那会是什么?

4

3 回答 3

68

这是更新的信息,有一个配置可以将文件扩展名关联到检查器,
.vimrc

let g:syntastic_javascript_checkers = ['jshint']

还要获取有关正在发生的事情的信息,请在 vim 中运行此命令

:SyntasticInfo

你会得到类似这样的输出:

Syntastic info for filetype: javascript  
Available checkers: gjslint jshint  
Currently active checker(s): gjslint  
Press ENTER or type command to continue
于 2013-07-04T11:43:56.063 回答
6

我刚遇到同样的问题。结果,Syntastic 在寻找jsljshint 之前寻找 (JSLint)。如果两者都安装了,您可能会被误导。我搬到jsl了不在我的 PATH 中的某个地方,并且检测到 jshint 就好了。

来源:
https ://github.com/scrooloose/syntastic/pull/47

于 2011-12-07T06:27:25.597 回答
0

我在这个问题上苦苦挣扎了好几天,SyntasticInfo即使jshint在我添加let g:syntastic_javascript_checkers['jshint']到我的.vimrc. 我使用的是 Ubuntu 15.04,并按照教程在 Ubuntu 上安装 nvm、nodejs 和 jshint。在我这样做之后,我发现如果我filetype plugin indent on从我的.vimrc然后打开一个.js文件中删除该行,一切都会完美运行!总结...

  1. 按照上面链接的教程
  2. 添加~/.nvm/<version_number>/bin到路径.bashrc
  3. filetype plugin indent on_.vimrc
  4. 添加let g:syntastic_javascript_checkers['jshint'].vimrc
  5. :so %vim里面
  6. 打开一个.js文件
  7. 添加filetype plugin indent on回您的.vimrc
  8. 现在一切都神奇地起作用了
于 2016-02-03T04:49:32.523 回答