Приветствую!
Сегодня завершим настройку нашего консольного редактора 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, то устанавливаем такие пакеты:
sudo apt install -y shellcheck pylint bat
- shellcheck – линтер для bash/sh;
- pylint – линетр для python;
- bat – утилита подсветки синтаксиса при выводе текста в консоли (нам нужна для плагина fzf).
Сразу же зададим цветовую тему Nord для утилиты bat с помощью переменной окружения:
echo 'export BAT_THEME="Nord"' >> ~/.profile && . ~/.profile
Данную переменную можно также задать в файле вашей оболочки: ~/.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
И так, ниже представлен список плагинов, которые я активно использую в своём 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-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 - vim-fugitive - Плагин отображает текущую ветку Git в строке состояния (Vim/Neovim). В нашем случае используется совместно с плагином lightline.vim.
Страница плагина на github - nvim-scrollview - Добавляет полосу прокрутки для визуализации положения в файле (только Neovim).
Страница плагина на github - vim-floaterm - Предоставляет плавающее терминальное окно в сессиях редактора (точно работает в Neovim, про vim читайте доку).
Страница плагина на github
Список не маленький, но и не такой длинный, каким мог быть. Не стоит забывать, что каждый новый подключаемый плагин в своей мере нагружает редактор. Поэтому увлекаться не рекомендуется. При работе с указанными выше плагинами, я не заметил каких либо неполадок в работе Neovim. Если конечно всё встало корректно. Приступим к установке.
Скачивание конфига
Устанавливаем менеджер плагинов vim-plug, который необходим для удобного скачивания и установки других плагинов:
curl --create-dirs -fLo ~/.local/share/nvim/site/autoload/plug.vim https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Справка по команде выше:
- curl – это утилита взаимодействия с веб по протоколам передачи данных, таких как http;
- --create-dirs – создавать каталоги по пути скачиваемого файла;
- -f – завершение команды в случае HTTP ошибок;
- -L – следование редиректу;
- -o – позволяет указать путь, куда положить скачиваемый файл.
Копируем базовый конфиг с моего репозитория на GitHub такой командой:
curl --create-dirs -fLo ~/.config/nvim/init.vim https://raw.githubusercontent.com/r4ven-me/dots/main/.config/nvim/init.vim
Если вам интересны подробности о содержимом моего базового конфига, то милости прошу к прочтению статьи:
Neovim – конфигурация редактора: базовая настройка Neovim — конфигурация редактора: swap, backup и undo файлы Neovim — конфигурация редактора: настройка горячих клавиш и автозапуск команд
Теперь копируем конфиг с плагинами:
curl --create-dirs -fLo ~/.config/nvim/plugins.vim https://raw.githubusercontent.com/r4ven-me/dots/main/.config/nvim/plugins.vim
Установка плагинов
Устанавливаем такой командой:
nvim -e -c 'PlugInstall' -c 'qall!'
Открываем файл с плагинами и должно получиться такое:
nvim ~/.config/nvim/plugins.vim
При добавлении в список новых плагинов, после запуска редактора их скачивание произойдет автоматически.
Чтобы удалить конкретный плагин, удалите строку с именем плагина (или закомментируйте), после перезапустите редактор и выполните команду:
:PlugClean
И подтвердите нажатием 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-скиллом)
Успехов!
Полезные источники
Ссылки на источники плагинов в таблице вначале статьи)
Мои ссылки:
- Мой основной сайт - r4ven.me
- Мой телеграм - t.me/r4ven_me