Мотивация
Как часто вы, написав код, запускаете его и видите сообщение о синтаксической ошибке? Я часто. А как часто, найдя и исправив эту ошибку, вы вновь, запуская код, видите похожее сообщение?
Я часто…
Причин тому несколько:
- я очень невнимательный
- я пишу на многих языках
И еще ничего, если это просто какой-то скриптик или страничка и воспроизвести код быстро. А если это нечто, что бы его воспроизвести требует что-то там перезапустить, где-то там выйти/зайти и т.д. и т.п.
Я это терпел и пытался быть внимательным пересматривая код перед запуском. Но иногда и это не помогало. Файлы с исходниками бывают длинными и потерять одну другую скобочку бывает не сложно.
Варианты
Для каждого языка в отдельности возможно есть под vim плагин решающий эту проблему. Например для js есть куча симпатичных оберток для jslint. Но все это не универсально и привыкнув не перечитывать js-код забываешь делать это для ruby… Можно конечно поставить много плагинов для проверки синтаксиса — и это есть наиболее простой выход, но при одном условии…
Решение
А условие это таково: Вы не знаете что есть syntastic.
Плагин рабочий, но как показывает практика не каждый начинающий vim-ер может начать его использовать(причиной тому опять таки невнимательность и излишняя ненастойчивость). Поэтому я и пишу эту маленькую статейку.
Итак для начала установка:
git clone github.com/scrooloose/syntastic.git
cd syntastic
rake install
#или если у вас не уствновлен ruby
сp -r * ~/.vim/
По умолчанию плагин ничего не делает. И самое простое что можно сделать что бы работа плагина стала видна — добавить в .vimrc команду:
let g:syntastic_enable_signs=1
и перезапустить vim (важно именно добавить настройку в .vimrc и презапустить vim). Ошибки и предупреждения будут отмечены символами >> на красном и желтом фонах соответственно, по левой стороне от кода. Для чтения сообщения об ошибке надо ввести
:Errors
. Неудобство состоит в том что окошко Errors не обновляется когда вы перезаписываете буфер и для его обновления нужно будет опять набрать комманду :Errors
.Дальше
Внимание: проверка js-кода не будет работать до тех пор пока вы не скопируете бинарник скачанный с www.javascriptlint.com/download.htm в любую папку прописанную в вашем PATH.
И не забываем читать документацию в vim:
:h syntastic
Решение проблем с плагином
Для некоторых языков плагин не показывает маркеры слева от строки с ошибкой. Для такого случая есть в syntastic statusline flag — это еще один способ увидеть результаты работы плагина. Фишка эта подробно описана по
:h syntastic-statusline-flag
Проверка синтаксиса shell скриптов может из коробки не заработать. Самое простое решение в таком случае добавить в .vimrc строчку
let b:shell = 'sh'
или let b:shell = 'bash'
. После этого могут не работать маркеры, но syntastic statusline упомянутый выше сообщает об ошибках в коде.