Найти тему
Сделай игру

NVIM он же NeoVim для разработчика. Часть 2.3

Итак: начало эпопеи, начало 2 главы, предыдущая часть.

Тут мы рассмотрим всего несколько тем, которые, на мой взгляд, заслуживают внимания: комментарии, JSDocs, подсветка цветов и подсветка начала и конца скобок.

Комментирование кода

Пока я готовил эту статью - пересмотрел несколько решений для комментирования кода. Самое простое, не требующее никаких дополнительных плагинов было использование встроенных инструментов обработки. Например, если ввести команду :s/^/\/\/ - то в начале строки появятся символы "//" (можно заменить их на другие если нужно). Вроде хорошо, но это было одностороннее действие; чтобы снять комментарии потребовалось бы другое. Поэтому, я решил остановиться на этом плагине. Почему на этом? Он мне первым попался и оказался способен выполнить то, что требуется.

Однако, для того, чтобы его эффективно использовать надо будет настроить сочетания. Мне, в принципе, нужно всего одна ctrl+/. Но вышло всё не совсем так, как я хотел.

Дело в том, что комментирование одной строки и нескольких строк пришлось разделить из-за того, что применять их надо в разных режимах: обычном (командном) и визуальном.

Тут, к сожалению, есть один нюанс, который я пока не знаю (да и не особо стремлюсь узнать, если честно) как побороть. В визуальном режиме, чтобы закомментировать несколько строк, надо их сперва выбрать, потом нажать esc, а затем применить комментирование к нескольким строкам. Фокус в том, что если сместить курсор и вызвать комментирование ещё раз - оно будет применено к последнему выделению. Понимаете глубину трагедии. Поэтому:

  • ctrl+/ - закомментировать или раскомментировать 1 строку;
  • ctrl+alt+/ - закомментировать или раскомментировать последнее выделение, выполненное в визуальном или мульткурсорном режиме.

Настройка проста: после установки плагина NERD Commenter (этому, я полагаю, вы уже научились, читая предыдущие части) дополнить файл настройки (в нужном месте, это вы тоже умеете) следующими строчкам:

" ctrl+/ для того, чтобы закомментить 1 строку / выделение после сброса
noremap <C-_> :call nerdcommenter#Comment(1, 'toggle')<CR>
nnoremap <C-A-_> :call nerdcommenter#Comment('x', 'toggle')<CR>

Готово. Можете управлять комментированием кода. Не сразу получится, да, но надо потренироваться. Как и со всем, с чем мы имеем дело. Мы же выбрали путь самурая, да? Вот и учимся не только страдать, но и гордиться этим.

JSDoc

Это лично вам, возможно, и не потребуется. Кто не знает, JSDoc - это что-то вроде стандарта, позволяющего по комментариям создавать справку по кодовой базе. Как видно из названия, он совершенно определённо настрое на Javasctipt. Именно поэтому я его и использую. Мог бы привести ещё несколько примеров и объяснений, но вы ведь настраиваете NVIM, а не на проповедь пришли, верно?

Короче говоря, так уж вышло, что JSDoc у меня уже есть, хотя я его не ставил. Спасибо плагину coc и установленным им расширениям (coc-tsserver). Для того, чтобы вызвать вставку комментария к функции - достаточно ввести пробел в режиме ввода над функцией и автоподстановщик сразу предложит добавить комментарий и частично его заполнит. Дальше его надо только уточнить типы данных и описать их:

Вот так работает JSDoc от coc
Вот так работает JSDoc от coc

Должен признаться, что он работает менее удобно, нежели в Sublime Text (его я сейчас, в основном, и использую). Но, всё же, выполняет примерно 90% всей необходимой функциональности, что, согласитесь, не так уж и плохо.

Есть и другие плагины для JSDoc, но меня, думаю, этот вполне устроит.

Подсветка начала/конца скобок

Изначально, я думал, что для этого потребуется какой-то особый плагин. Но они и так подсвечиваются. Не знаю усилиями какого плагина (либо, возможно, это встроенная функциональность), так что тут писать нечего.

Подсветка цвета

Данная функциональность не то, чтобы сильно востребована, но у веб-разработчиков вполне себе востребованная функциональность. И, поскольку, из коробки такого не предлагается, воспользуюсь этим плагином.

Вынужден констатировать, что он работает далеко не так хорошо, как мог бы, но прочие вообще отказались работать. Возможно, дело в плагине цветовой схемы или терминале, но увидеть подсветку цвета мне не удалось.

Трудность упомянутого выше плагина в том, что он не работает постоянно. Его надо включать. Немного поэкспериментировав, нашёл довольно простое решение - добавить в файл конфигурации следующую настройку:

autocmd BufEnter * :ColorizerAttachToBuffer

Это будет включать каждый раз расцветку при входе в буфер (если не включено). Если надо принудительно выключить - можно воспользоваться командой :ColorizerToggle.

Получилось примерно так
Получилось примерно так

Можно настроить так, чтобы подсвечивалось не выделение, а цвет текста, но мне так больше нравится.

Наверное, на сегодня пожалуй хватит. Окончание 2 части - тут.