Рекомендуемые плагины Vim для кодирования JavaScript? [закрыто]

125

Я новичок в JS и Vim. Какие плагины помогут мне написать код Javascript?

Тарек Сайед
источник
6
Чтобы сделать вопрос более ясным и помочь OP с их английским языком для будущих публикаций ... Он должен гласить: «Привет, я новичок в JS и Vim. Какие плагины помогут мне написать код Javascript?» Вы можете сказать: «Я новичок в Javascript и vim». Вы можете использовать «what is» для единственного числа, например, «What is a_plugin, который может мне помочь ...», или вы можете использовать «which» для множественного числа, например: « Which_plugins помогли бы мне ...». Также обратите внимание, что вместо «plugins is » вы должны использовать «plugins would », потому что это гипотетически. Надеюсь, что это поможет :-)
hendrixski
3
@hendrixski - проголосуйте, чтобы снова открыть это.
ocodo
8
Самый конструктивный неконструктивный вопрос.
Владислав Зоров
8
Мне очень нравится, как этот «неконструктивный» вопрос помог мне значительно улучшить мой рабочий процесс.
MaiaVictor
Поскольку вопрос (несправедливо ИМО) закрыт, я просто добавлю здесь комментарий: есть электронный интерфейс для NeoVim с автозаполнением сервера машинописного текста из коробки (работает и с ванильным JS!): Onivim.io , Это все еще немного грубовато, но я использую его в качестве ежедневного драйвера в течение нескольких недель, и у меня не было слишком много проблем. У него действительно хорошее сообщество, и он очень активно развивается, поэтому я ожидаю от него хороших результатов в будущем! Полное раскрытие информации: я делаю ежемесячное пожертвование проекту и планирую внести свой вклад в будущем.
Parker Ault

Ответы:

116

Проверка синтаксиса / линтинг

Существует очень простой способ интегрировать JSLint или управляемый сообществом jshint.com (что намного лучше IMO) с Vim с помощью плагина Syntastic Vim. Смотрите мой другой пост для получения дополнительной информации.

Просмотр исходного кода / список тегов

Там также очень аккуратный способ добавить тег-листинг с помощью Mozilla в DoctorJS (ранее jsctags ), который также используется в Cloud9 IDE «s Ace онлайн редактор .

  1. Установите следующие пакеты, используя ваш любимый менеджер пакетов (Ubuntu apt-get, домашнийbrew Mac и т. Д.):
    1. exuberant-ctags
      • ПРИМЕЧАНИЕ. После установки убедитесь, что он ctagsдействительно работает, exuberant-ctagsа не предустановлена ​​ОС ctags. Вы можете узнать, выполнив ctags --version.
    2. node (Node.js)
  2. Клон DoctorJSс github:git clone https://github.com/mozilla/doctorjs.git
  3. Войдите в DoctorJSкаталог и make install(вам также понадобится makeустановленное приложение, но оно очень простое).
  4. Установите плагин TagBar Vim ( ПРИМЕЧАНИЕ: это TagBar, а не старый печально известный TagList!).
  5. ПРИБЫЛЬ. :)

Новый проект - Tern.js

DoctorJS в настоящее время мертв . Там новый многообещающий проект под названием tern.js . В настоящее время он находится на ранней стадии бета-тестирования и в конечном итоге должен его заменить.

Существует проект ramitos / jsctags, в котором в качестве движка используется tern . Только npm install -gон, и панель тегов будет автоматически использовать его для файлов javascript.

Ory Band
источник
5
+1 для TagBar (был в курсе только TagList!)
RobM
9
В настоящее время doctorjs требует, чтобы вы клонировали рекурсивно, как указано в этой ошибке , git clone --recursive https://github.com/mozilla/doctorjs.gitа затем make install должна работать
Энди Рэй
1
doctorjs в Windows: baumichel.blogspot.ca/2011/11/… добавление дополнительных типов файлов в TagBar: github.com/majutsushi/tagbar/wiki
Эндрю
6
Прежде чем сделать шаг 3, CD в doctorjs и сделать это: git submodule init && git submodule update. Затем выполните шаг 3.
Glortho
2
Команда brew на самом делеbrew install ctags-exuberant
sym3tri
17

snipMate эмулирует систему вставки TextMate и по умолчанию поставляется с множеством полезных фрагментов JS (среди прочего). Добавить собственное очень легко.

javaScriptLint позволяет вам проверять ваш код на соответствие jsl.

Также вы можете найти множество файлов синтаксиса JavaScript. на vim.org. Попробуйте их и посмотрите, какой из них лучше всего подходит вам и вашему стилю программирования.

Нативный омникомплект ( ctrlx- ctrlo) мне очень подходит . Вы можете сделать его более динамичным с помощью autoComplPop , но иногда это может раздражать.

edit, в ответ на комментарий tarek11011:

acp не работает для JavaScript по умолчанию, вам нужно немного его настроить. Вот как я это сделал (грязный хак, я все еще нуб Vim):

В vim-autocomplpop / plugin / acp.vim я добавил phpи javascriptactionscript), чтобы behavsон выглядел так:

let behavs = {
    \   '*'            : [],
    \   'ruby'         : [],
    \   'python'       : [],
    \   'perl'         : [],
    \   'xml'          : [],
    \   'html'         : [],
    \   'xhtml'        : [],
    \   'css'          : [],
    \   'javascript'   : [],
    \   'actionscript' : [],
    \   'php'          : [],
    \ }

Чуть ниже приведен ряд блоков кода, которые выглядят так:

"---------------------------------------------------------------------------
call add(behavs.ruby, {
    \   'command' : "\<C-x>\<C-o>",
    \   'meets'   : 'acp#meetsForRubyOmni',
    \   'repeat'  : 0,
    \ })

Я продублировал это и немного отредактировал, чтобы он выглядел так:

"---------------------------------------------------------------------------
call add(behavs.javascript, {
    \   'command' : "\<C-x>\<C-o>",
    \   'meets'   : 'acp#meetsForRubyOmni',
    \   'repeat'  : 0,
    \ })

и сделал то же самое для ActionScript и php.

Если вы хотите отредактировать JS / CSS в документе HTML, вы можете: установить ft = html.css.javascript в командной строке Vim, чтобы заставить ctrlx- ctrloработать должным образом с именами методов / свойств в блоках JS и свойствами / значениями в блоках CSS. Однако у этого подхода есть и недостатки (странные отступы…).

romainl
источник
Как вы нажимали эти крутые клавиши?
Максим Слойко
1
Ха-ха, это <kbd> </kbd>. Браузеры обычно не имеют стиля по умолчанию для этого тега, спасибо команде SO за дополнительную работу.
romainl
спасибо, romainl, но у меня проблема с autoComplPop, он работает только с html файлом, без js, css и php
Тарек Сайед
Как и многие плагины Vim, acp очень чувствителен к типам файлов. Если тип файла буфера - «html», ни acp, ни omni complete не будут работать для встроенных JS / CSS / PHP. И я собираюсь отредактировать свой ответ, здесь недостаточно вариантов редактирования / места.
romainl
Вы можете предпочесть использовать текущую ветку обслуживания snipMate, которая принадлежит Rok Garbas & co. собрать.
thisgeek 09
8

Этот плагин также полезен: https://github.com/maksimr/vim-jsbeautify . Он обеспечивает полное автоформатирование для javascript. Одно нажатие клавиши - и ваш код выглядит красиво. Это также может пригодиться при вставке фрагментов кода. Он использует популярный js-beautifier, который также можно найти в виде онлайн-приложения. Последнюю можно найти прямо здесь: http://jsbeautifier.org/ .

Чил тен Бринке
источник
3
Я написал общий плагин автоформатирования для vim, который интегрирует js-beautifier и многое другое. Проверьте здесь: github.com/Chiel92/vim-autoformat
Chiel ten Brinke
prettitier - лучший
Alex Shwarc
6

Я использую только один плагин vim для js - jslint.vim - https://github.com/hallettj/jslint.vim, который проверяет ваш код с помощью правил jslints, а также выдает синтаксические ошибки.

Скотт
источник
спасибо, но я думаю, у меня проблемы посмотрите img69.imageshack.us/img69/7629/11142565.png
Тарек Сайед
Хм, в Windows есть конкретные инструкции, которым вы должны следовать, для этого требуется интерпретатор javascript. Я не пробовал устанавливать его в Windows, но инструкции по установке немного внизу страницы в README, извините, я больше ничем не могу помочь.
Скотт
3

Чтобы исправить отступы и автоформатирование (Ctrl =): Отступ JavaScript

Чтобы установить ширину отступа, добавьте javascript.vimфайл в каталог ~ / .vim / ftplugin со следующим содержимым (для отступа в два пробела):

 setl sw=2 sts=2 et
Евгений
источник
в ~/.vimrc:autocmd FileType javascript setlocal sw=2 ts=2 sts=2
JuanPablo 05