VIM + JSLint?

121

Я провожу дни в vim, в настоящее время пишу много JavaScript. Я пытался найти способ интегрировать JSLint или что-то подобное в vim, чтобы улучшить мое кодирование. Кому-нибудь удалось что-то подобное сделать?

Редактировать:

попробовал это: Проверка синтаксиса Javascript из Vim , к сожалению, результат очень грубый.

Бен Лемасурье
источник

Ответы:

34

Вы можете следовать инструкциям веб-службы JSLint + интеграция с VIM или сделать то, что сделал я:

Загрузите http://jslint.webvm.net/mylintrun.js и http://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 / на / js на путь к SpiderMonkey и /my/path/to/mylintrun.js на путь, куда вы помещаете файлы JS.

Теперь вы можете использовать : make в VIM и использовать окно quickfix (: he quickfix-window) для перехода от ошибки к ошибке.

f3lix
источник
Почему вы выбираете буфер и передаете его в качестве аргумента mylintrun?
jamessan
@jamessan: скрипт mylintrun.js читает файл со стандартного ввода. Так вот для чего нужна кошка. Для вывода ошибок mylintrun.js также требуется имя файла, поэтому оно указывается в качестве аргумента. Вы можете изменить скрипт, чтобы открыть файл для чтения вместо чтения из стандартного ввода (что делает кошку ненужной). Но я не хотел об этом беспокоиться ... и я считаю, что есть проблема с чтением файлов, если у вас есть движок JavaScript, скомпилированный без FileObject
f3lix
каков «путь к SpiderMonkey» на вашей машине - у меня есть несколько
доктор Франкенштейн
Не могу попасть на mylintrun.js, есть ли другое место? кажется мертвым
bluekeys
1
Ссылки на mylintrun.js и fulljslint.js не работают, что делает этот ответ менее чем полезным, поскольку он сильно зависит от них. Пожалуйста, можете ли вы обновить рабочие адреса? В противном случае мне нужно будет удалить этот ответ, который является обломом, потому что он выглядит неплохо и помог многим людям. Спасибо.
Кев
187

Лучший способ ИМО:

  1. Установите плагин Syntastic Vim - лучший инструмент для проверки синтаксиса для множества языков, плюс он интегрируется с окном списка местоположений Vim (== quickfix ).
  2. Выберите один из двух вариантов ниже:

JSLint

  1. Установите jsl(исполняемый файл JSLint) с помощью вашего любимого менеджера пакетов (Ubuntu apt-get, домашнийbrew Mac и т. Д.).

Jshint.com, управляемый сообществом (лучше, чем JSLint)

  1. Установите node.js, используя ваш любимый менеджер пакетов.
  2. Установите диспетчер пакетов узла : 'curl https://npmjs.org/install.sh | sh ' РЕДАКТИРОВАТЬ: npm СЕЙЧАС ЯВЛЯЕТСЯ ЧАСТЬЮ node.js
    • См. Http://npmjs.org для получения дополнительной информации.
  3. Установите jshint глобально: 'npm install jshint -g'
  4. Поместите файл конфигурации jshint в каталог $ HOME : '~ / .jshintrc'
  5. Перезапись Syntastic «s syntax_checkers/javascript.vimфайл с этим один - EDIT: НЕТ БОЛЬШЕ НЕОБХОДИМОСТИ С NEWEST SYNTASTIC версия.

Наслаждайтесь! :)

Ory Band
источник
1
Я попробую прямо сейчас. Пробовал клонировать Syntastic и использовать команду «rake install», а затем заменил файл javascrip.vim вашим. Все еще не могу понять, как его использовать: SyntasticEnable, насколько я могу судить, ничего не делает. Я продолжу попытки ..
Клас Могрен
2
Хорошо, заметил, что Syntastic требует ballon_eval, который не поддерживается в MacVim. Жаль ..
Claes Mogren
1
Пытался добавить его, надеюсь, его (или более красивую версию) вытащат github.com/scrooloose/syntastic/pull/47
Клас Могрен
9
Я просто потратил много времени, пытаясь понять, почему ничего не происходит ... если вы вытащили .jshintrc Ори, имейте в виду, что после слова "google" в объекте "предэф" есть запятая в конце, из-за которой jshint не загружается и Синтастик молча терпеть неудачу.
ThePants
1
jsl для Windows: также javascriptlint.com/download.htm , обратите внимание на эту проблему в файле jsl.vim
Эндрю
17

Другой вариант - jslint.vim от Джесси Халлета. Он доступен на GitHub и работает с окном QuickFix Vim или без него. Хороший плагин!

Алекс Кан
источник
1
+1 за это. Прекрасно работает. Удобно загрузить с vim.org/scripts/script.php?script_id=2729 . Обратите внимание: в Windows вам необходимо установить Ruby.
mm2001 01
3
Также не забудьте проверить JSHint, упомянутый ниже.
Alex Kahn
Проект больше не находится в разработке.
OrangeTux
6

Я был очень доволен использованием 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. Ошибки появляются в окне быстрого исправления.

bluekeys
источник
3

Вот инструкции для Mac OS, обновленные за ноябрь 2012 г. Предполагается, что у вас установлен Homebrew для получения Node.js, и что вы уже установили Syntastic для 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 и наслаждайтесь!

Шаун Дычко
источник