Как настроить Syntastic с помощью JSHint?
Как использовать плагин Syntastic Vim с JSHint для проверки кода JavaScript?
Окружающая среда:
- Ubuntu 11.04
- VIM - Vi IMproved 7.3
Что я установил после решения VIM + JSLint?:
- Vundle
- node.js
- Node Менеджер пакетов
- 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, col 1, 'blbla' не определена.
test.js: строка 4, col 1, 'x' не определена.
test.js: строка 4, col 5, 'nonono' не определена.
test.js: строка 6, col 1, 'a' не определена.
test.js: строка 7, col 1, 'b' не определена.
test.js: строка 8, col 5, 'a' не определена.
test.js: строка 8, col 10, 'b' не определена.
test.js: строка 8, col 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, похоже, установлены, но что-то, вероятно, отсутствует. Что бы это было?
Ответы
Ответ 1
Ниже приведена более подробная информация, есть конфигурация, которая связывает расширение файла с контрольной панелью,
в .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
Ответ 2
У меня была такая же проблема. Оказывается, Syntastic ищет jsl
(JSLint), прежде чем он ищет jshint. Если вы оба установили, вы, скорее всего, будете введены в заблуждение. Я переместил jsl
где-то не в PATH, а jshint был обнаружен просто отлично.
Источник:
https://github.com/scrooloose/syntastic/pull/47
Ответ 3
Я боролся с этой проблемой в течение нескольких дней, а SyntasticInfo
не узнал jshint
как доступную проверку даже после добавления let g:syntastic_javascript_checkers['jshint']
в мой .vimrc
. Я использую Ubuntu 15.04, и я выполнил этот учебник по установке nvm, nodejs и jshint на Ubuntu. После этого я обнаружил, что если бы я удалил строку filetype plugin indent on
из моего .vimrc
, а затем открыл файл .js
, все сработало отлично! Подводя итог...
- следуйте приведенному выше руководству
- добавить
~/.nvm/<version_number>/bin
к пути в .bashrc
- удалите
filetype plugin indent on
из .vimrc
- добавить
let g:syntastic_javascript_checkers['jshint']
в .vimrc
-
:so %
внутри vim
- открыть файл
.js
- добавьте
filetype plugin indent on
обратно в .vimrc
- все магически работает сейчас