Найти тему

Neovim — конфигурация редактора: установка и настройка плагинов

Оглавление
Neovim — конфигурация редактора: установка и настройка плагинов
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, то устанавливаем такие пакеты:

sudo apt install -y shellcheck pylint bat
  • shellcheck – линтер для bash/sh;
  • pylint – линетр для python;
  • bat – утилита подсветки синтаксиса при выводе текста в консоли (нам нужна для плагина fzf).
Установка пакетов
Установка пакетов

Сразу же зададим цветовую тему Nord для утилиты bat с помощью переменной окружения:

echo 'export BAT_THEME="Nord"' >> ~/.profile && . ~/.profile
Установка переменной для bat
Установка переменной для 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

И так, ниже представлен список плагинов, которые я активно использую в своём 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. Если конечно всё встало корректно. Приступим к установке.

Скачивание конфига

Устанавливаем менеджер плагинов 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
Установка vim-plug
Установка vim-plug
Если вам интересны подробности о содержимом моего базового конфига, то милости прошу к прочтению статьи:
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
-5

Установка плагинов

Устанавливаем такой командой:

nvim -e -c 'PlugInstall' -c 'qall!'
Установка плагинов
Установка плагинов

Открываем файл с плагинами и должно получиться такое:

nvim ~/.config/nvim/plugins.vim

Neovim после установки плагинов
Neovim после установки плагинов

При добавлении в список новых плагинов, после запуска редактора их скачивание произойдет автоматически.

Чтобы удалить конкретный плагин, удалите строку с именем плагина (или закомментируйте), после перезапустите редактор и выполните команду:

:PlugClean

И подтвердите нажатием y.

Демонстрация работы некоторых плагинов

  • При нажатии F2 открывается окно поиска файлов в системе. При нажатии Enter на указанном файле он откроется в текущем буфере Neovim. Закрыть окно можно клавишей Esc:
Поиск с fzf
Поиск с fzf
  • При нажатии Shift+F2 во всплывающем окне fzf открывается список буферов Neovim:
Список буферов с fzf
Список буферов с fzf
  • При нажатии F3 открывается боковая панель с деревом файлов директории из которой был запущен редактор:
Боковая панель NERDTree
Боковая панель NERDTree
  • При нажатии F4 во всплывающем окне открывается простой терминал. В нём можно работать также, как и в обычном. При повторном нажатии F4 окно свернется, но сессия не закроется. Для вызова вновь нажмите эфчетыре:
Плавающий терминал
Плавающий терминал
  • Если вы конфили Neovim по моим статьям, то помните, что на F5 у нас забинжено действие запуска текущего файла, как исполняемого, если он имеет расширение .sh или .py. Т.к. у нас есть “плавающий терминал”, при нажатии F6 текущий файл исполнится во всплывающем окне:
Запуск скрипта в плавающем терминале
Запуск скрипта в плавающем терминале
  • При нажатии клавиши F7 активируется статический анализатор кода для shell и python файлов. При условии, что в системе установлены пакеты линтеров (делали в начале статьи). Выглядит это следующим образом:
Работа линтера shellcheck
Работа линтера shellcheck
Работа линтера pylint
Работа линтера pylint

Чтобы отключить линтер, вновь нажмите F7.

  • Ну и при нажатии F8 активируется Jedi – библиотека автодополнения для Python:
Работа LSP с Jedi
Работа LSP с Jedi

Советую не использовать одновременно Jedi и Neomake, т.к. Jedi уже включает в себя проверку синтаксиса.

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

Чувствуйте себя свободно, при адаптировании моего конфига под себя) Потратив немного времени на изучение вы поймёте, что это не сложно.

Заключение

Фух… вот теперь наш редактор Neovim готов к активному использованию.

Он красив и практичен. А главно, очень шустр в работе. Порог входа в случае vim-like редакторов конечно высок, он по моему личному мнению, оно того стоит. Это путь классического Unix, который сформировался еще на заре IT технологий и со временем стал только лучше.

Если у вас остались вопросы, или просто есть желание обсудить “тяжести” работы в *vim – добро пожаловать в наш чат в телеге: @r4ven_me_chat.

Если вы зачем-то осилили данную статью, но никогда не работали с Vim/Neovim, обязательно изучите вводную часть: VIM – Консольный редактор: знакомство. Это прольёт свет на некоторые аспекты консольных текстовых редакторов.

Следующим моим шагом станет адаптация данных конфигов, написанных на vim-script, в формат lua. Предполагаю, что это тоже будет весело)

Спасибо, что читаете. Учтите, что сегодня умение выйти из *vim является полноценным hard-скиллом)

-16

Успехов!

Полезные источники

Ссылки на источники плагинов в таблице вначале статьи)

Мои ссылки: