
Neovim — конфигурация редактора: установка и настройка плагинов
Приветствую!
Сегодня завершим настройку нашего консольного редактора Neovim: установим и настроим перечень плагинов, которые преобразят внешний вид и дополнят функционал фишками IDE. Из основных: тема Nord, интеграция линтеров для языков программирования, поддержка git, боковая панель с деревом файлов проекта, ну и, т.к. Neovim имеет поддержку LSP, подключение библиотеки автодополнения на основе сервера ЯП Python. И многое другое.
Присоединяйтесь к нашему каналу: t.me/r4ven_me и чату: t.me/r4ven_me_chat в Telegram .
Введение
Количество существующих плагинов для Vim/Neovim не счесть. За счет возможности гибкой конфигурации, плагины существуют на любой вкус и цвет. Руководств в интернете по их настройке тонна.
В данной статье я расскажу про плагины, которые использую лично, а также покажу, как их легко установить и настроить – необходимо лишь скопировать конфиг, а установка и настройка уже произойдет автоматически.
Все действия выполнялись в среде дистрибутива Linux Mint 21 (Ubuntu 22.04). В других дистрибутивах шаги +- аналогичны.
Подготовка
Для корректной работы плагинов асинхронной проверки кода, а также подсветки синтаксиса во всплывающих окнах fzf, необходимо установить специальные библиотеки и пакеты, которые будут источниками для работы плагинов.
Т.к. в моём примере фигурируют bash и python, то устанавливаем такие пакеты:
shellcheck
– линтер для bash/sh;pylint
– линетр для python;bat
– утилита подсветки синтаксиса при выводе текста в консоли (нам нужна для плагинаfzf
).
Сразу же зададим цветовую тему Nord для утилиты bat
с помощью переменной окружения:
Данную переменную можно также задать в файле вашей оболочки: ~/.bashrc
или ~/.zshrc
. Тут уж на ваше усмотрение.
Также для отображения иконок в терминале из цветовой темы Neovim, требуется Powerline шрифт. Подойдет любой Nerd font, скачать который можно тут: https://www.nerdfonts.com/font-downloads.
Лично я предпочитаю моноширный шрифт Hack. Положить шрифт необходимо в /usr/share/fonts
.
Не упущу возможности упомянуть мою статью про кастомизацию Linux Mint, в которой также описывается и установка шрифтов: Кастомизация Linux Mint 20/21 + Nord theme.
Список устанавливаемых плагинов Neovim
И так, ниже представлен список плагинов, которые я активно использую в своём Neovim:
Плагин | Описание |
---|---|
vim-startify | Пользовательская страница запуска, отображающая список недавно открытых файлов и сессий, при запуске редактора без аргументов (Vim/Neovim). Страница плагина на github |
vim-plugin-ruscmd | Позволяет вводить команды vim, используя русскую раскладку клавиатуры (Vim/Neovim). Страница плагина на github |
vim-endwise | Автоматически завершает структуры if , do , def в различных языках программирования (Vim/Neovim).Страница плагина на github |
neomake | Плагин для асинхронной проверки кода. Поддерживает различные языки программирования и линтеры, такие как pylint для Python и shellcheck bash/sh (Vim/Neovim).Страница плагина на github |
bash-support | Обеспечивает поддержку Bash-скриптов (Vim/Neovim). Создание шаблонов и пр. Страница плагина на github |
vim-gitgutter | Подсвечивает изменения в репозитории Git (Vim/Neovim). Страница плагина на github |
vim-autopair | Автоматически вставляет или удаляет скобки/кавычки при вводе (Vim/Neovim). Страница плагина на github |
fzf | Исполняемый файл утилиты размытого поиска – fzf. Данный плагин необходимо для корректной работы, плагина fzf.vim (ниже) в deb based дистрибутивах (Vim/Neovim). Страница плагина на github |
fzf.vim | Интегрирует fzf с Vim/Neovim, предоставляя интерфейс расширенного поиска и дополнительные функции (Vim/Neovim). Страница плагина на github |
vim-commentary | Упрощает комментирование и раскомментирование кода различных языков программирования с помощью клавиш-команд, таких, как gcc для строк и gc для блоков кода (Vim/Neovim).Страница плагина на github |
indent-blankline.nvim | Отображает визуальные направляющие для уровней отступа (только Neovim). Страница плагина на github |
jedi-vim | Предоставляет поддержку Python Language Server Protocol (LSP) через библиотеку Jedi (Vim/Neovim). Если в системе не установлен пакет vim-python-jedi , плагин установит его дополнительно в директорию с плагином.Страница плагина на github |
nerdtree | Плагин для отображения боковой панели с файлами проекта (Vim/Neovim). Страница плагина на github |
vim-devicons | Добавляет цветные иконки типов файлов для NERDTree (Vim/Neovim). Страница плагина на github |
nerdtree-git-plugin | Улучшает NERDTree статусными флагами Git (Vim/Neovim). Страница плагина на github |
nord-vim | Официальный плагин цветовой схемы Nord (Vim/Neovim). Страница плагина на github |
lightline.vim | Легкая и настраиваемая строка состояния (Vim/Neovim). Страница плагина на github |
vim-fugitive | Плагин отображает текущую ветку Git в строке состояния (Vim/Neovim). В нашем случае используется совместно с плагином lightline.vim. Страница плагина на github |
nvim-scrollview | Добавляет полосу прокрутки для визуализации положения в файле (только Neovim). Страница плагина на github |
vim-floaterm | Предоставляет плавающее терминальное окно в сессиях редактора (точно работает в Neovim, про vim читайте доку). Страница плагина на github |
Список не маленький, но и не такой длинный, каким мог быть. Не стоит забывать, что каждый новый подключаемый плагин в своей мере нагружает редактор. Поэтому увлекаться не рекомендуется. При работе с указанными выше плагинами, я не заметил каких либо неполадок в работе Neovim. Если конечно всё встало корректно. Приступим к правке конфига.
Правка конфига
Прежде чем продолжить, хочу уточнить, что указанные ниже шаги, подразумевают, что у вас уже есть базовый конфиг Neovim. Если нет, то просто скопируйте мой с репозитория на GitHub такой командой:
Справка по команде выше:
curl
– это утилита взаимодействия с веб по протоколам передачи данных, таких как http;--create-dirs
– создавать каталоги по пути скачиваемого файла;-f
– завершение команды в случае HTTP ошибок;-L
– следование редиректу;-o
– позволяет указать путь, куда положить скачиваемый файл;
Если вам интересны подробности о содержимом моего базового конфига, то милости прошу к прочтению статьи:
Далее открываем наш базовый конфиг Neovim:
Раскоменчиваем 2 строки, если они зкоменчены:
А в конец файла вставляем код:
Пропустите этот шаг, если вы скопировали конфиг с GitHub.
Данный блок кода выполняется при запуске Neovim. Он осуществляет проверку наличия установленного менеджера плагина vim-plug, который необходим для удобного скачивания и установки других плагинов. Если менеджер отсутствует, то он скачивается и устанавливается автоматически в соответствующую директорию.
Сохраняем файл и закрываем редактор:
Теперь открываем новый файл с настройками плагинов:
Вставляем в него следующий код:
Сохраняем, закрываем:
Вы также можете скопировать данный файл с моего GitHub командой:
Установка плагинов
В итоге у нас должны быть два файла:
Затем вновь открываем редактор, установка плагинов начнётся автоматически. Обязательно дожидаемся завершения:
Увидев такую ошибку, не пугаемся, просто нажимаем Enter:
Сохраняемся и выходим из редактора:
Вновь открываем файл с плагинами и должно получиться такое:
При добавлении в список новых плагинов, после запуска редактора их скачивание произойдет автоматически.
Чтобы удалить конкретный плагин, удалите строку с именем плагина (или закомментируйте), после перезапустите редактор и выполните команду:
И подтвердите нажатием y
.
Демонстрация работы некоторых плагинов
- При нажатии
F2
открывается окно поиска файлов в системе. При нажатии Enter на указанном файле он откроется в текущем буфере Neovim. Закрыть окно можно клавишейEsc
:
- При нажатии
Shift+F2
во всплывающем окне fzf открывается список буферов Neovim:
- При нажатии
F3
открывается боковая панель с деревом файлов директории из которой был запущен редактор:
- При нажатии
F4
во всплывающем окне открывается простой терминал. В нём можно работать также, как и в обычном. При повторном нажатии F4 окно свернется, но сессия не закроется. Для вызова вновь нажмите эфчетыре:
- Если вы конфили Neovim по моим статьям, то помните, что на
F5
у нас забинжено действие запуска текущего файла, как исполняемого, если он имеет расширение.sh
или.py
. Т.к. у нас есть “плавающий терминал”, при нажатии F6 текущий файл исполнится во всплывающем окне:
- При нажатии клавиши
F7
активируется статический анализатор кода для shell и python файлов. При условии, что в системе установлены пакеты линтеров (делали в начале статьи). Выглядит это следующим образом:
Чтобы отключить линтер, вновь нажмите F7
.
- Ну и при нажатии
F8
активируется Jedi – библиотека автодополнения для Python:
Советую не использовать одновременно Jedi и Neomake, т.к. Jedi уже включает в себя проверку синтаксиса.
Также редактор умеет в git, комментарии с помощью горячих клавиш, имеет полосу прокрутки и многое другое. Весь список представлен в таблице. Подробности по настройке каждого плагина смотрите в документации, ссылки также в таблице.
Чувствуйте себя свободно, при адаптировании моего конфига под себя) Потратив немного времени на изучение вы поймёте, что это не сложно.
Заключение
Фух… вот теперь наш редактор Neovim готов к активному использованию.
Он красив и практичен. А главно, очень шустр в работе. Порог входа в случае vim-like редакторов конечно высок, он по моему личному мнению, оно того стоит. Это путь классического Unix, который сформировался еще на заре IT технологий и со временем стал только лучше.
Если у вас остались вопросы, или просто есть желание обсудить “тяжести” работы в *vim – добро пожаловать в наш чат в телеге: @r4ven_me_chat.
Если вы зачем-то осилили данную статью, но никогда не работали с Vim/Neovim, обязательно изучите вводную часть: VIM – Консольный редактор: знакомство. Это прольёт свет на некоторые аспекты консольных текстовых редакторов.
Следующим моим шагом станет адаптация данных конфигов, написанных на vim-script
, в формат lua
. Предполагаю, что это тоже будет весело)
Спасибо, что читаете. Учтите, что сегодня умение выйти из *vim
является полноценным hard-скиллом)
Успехов!
Полезные источники
Ссылки на источники плагинов в таблице вначале статьи)
Под данной инструкцией, на моём Дзен канале были заданы интересные вопросы:
1.
По первому пункту: если вы изучали конфиг, то вероятно видели строки, подобные этой:
Данная настройка, выполняет заданные действия при открытии редактора (директива autocmd), далее указаны типы файлов: sh (shell) и python. После указания типов, можно задются команды или любые другие настройки vim, которые будут выполнятся только при работе с файлами, заданных форматов. По сути, можно настроить всё что угодно. При открытии файлов других типов, эти настройки игнорируются.
В моём примере, при открытии python файлов, выполняется назначение (маппинг) горчей клавиши – F7 указанных действий: добавление флага исполнения текущему редактируемому файлу и запуск его как скрипта во всплывающем терминале (плагин floaterm).
Т.е. данная строка выполняется только в том случае, если вы открываете файл, заданного типа. Тоже самое справедливо и для других форматов, в т.ч. и PHP.
Таким образом можно настроить поведение редактора под любые нужды. И это лишь один из способов.
2.
Так как особо такой необходимости не было, поэтому не подскажу. Но я уверен, что уже существуют подобные инструменты, ибо предположу, что очень актуально) Например, поверхностный поиск привел меня к такому плагину: https://github.com/vim-vdebug/vdebug
Отмечу, что я его не проверял, привел его лишь в качестве примера.
Еще про первый вопрос. Можно вынести настройки для разных типов файлов (или любых других условий) в отдельные файлы. Затем описать нужные условия и при их соблюдении выполнить импорт настроек из этих файлов.
Например:
при открытии файлов с расширением .sh будут выполнены настройки из файла plugins.vim. Во всех других случаях, данное действие выполняться не будет.