Как настроить Syntastic с помощью JSHint? - PullRequest
44 голосов
/ 29 августа 2011

Как использовать плагин Syntastic Vim с JSHint для проверки кода JavaScript?

Среда:

  • Ubuntu 11.04
  • VIM - Vi IMproved 7.3

Что я установил, следуя решению на VIM + JSLint? :

  • Vundle
  • .js
  • Node Package Manager
  • jshint, глобально
  • Syntastic, установленный через Vundle (использовал команду: BundleInstall внутри Vim, чтобы убедиться, что 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,col 1, «a» не определено.
test.js: строка 7, col 1, «b» не определено.
test.js: строка 8, col 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, но что-то, вероятно, отсутствует.Что бы это было?

Ответы [ 3 ]

67 голосов
/ 04 июля 2013

Вот более обновленная информация, есть конфигурация для привязки расширения файла к контролеру,
в вашем .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
6 голосов
/ 07 декабря 2011

У меня была такая же проблема.Оказывается, Syntastic ищет jsl (JSLint), прежде чем ищет jshint.Если вы оба установили, вы, вероятно, будете введены в заблуждение.Я переместил jsl куда-то за пределы моего PATH, и jshint был обнаружен очень хорошо.

Источник:
https://github.com/scrooloose/syntastic/pull/47

0 голосов
/ 03 февраля 2016

Я боролся с этой проблемой в течение нескольких дней, и SyntasticInfo не распознал бы jshint в качестве доступного средства проверки, даже после того, как я добавил let g:syntastic_javascript_checkers['jshint'] к своему .vimrc.Я использую Ubuntu 15.04, и я следовал этому руководству, чтобы установить nvm, nodejs и jshint в Ubuntu.После этого я обнаружил, что если я удалил строку 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. теперь все волшебно работает
...