Путь конфигурации
Чтобы узнать путь до папки с конфигурацией nvim, можно ввести команду :echo stdpath('config')
NeoVim при инициализации смотрит на свой путь конфигурации. По этому пути он ищет файл init.lua
, который является точной входа в свою конфигурацию.
Сам по себе конфиг представляет из себя программу, на которую вим выполняет внутри себя.
.config > init.lua
Структура конфигурации
Структура конфигурации выглядит следующим образом:
init.lua
- наш стартовый bootstrap файлlua
- общая папка для всех конфигурацийlua/core
- ключевые вещи (цвета, маппинги, конфигурации)lua/plugins
- отдельные файлы для каждого плагина
Далее нам нужно создать файл с нашими базовыми конфигами в следующей папке:
lua / core / configs.lua
И теперь остаётся только импортировать модуль. Папка lua
будет установлена по дефолту
init.lua
Базовые настройки
Для изменения базовых настроек вима, нам нужно обращаться к таблице vim
. Все базовые настройки мы храним в configs.lua
.
lua / core / configs.lua
Последнее поле fillchars
нужно для того нам, чтобы перезатереть дефолтные символы, которые рисует вим - в частности:
- чтобы перезатереть пустые строки
- чтобы нарисовать
Сочетания клавиш
Далее добавим альтернативные сочетания клавиш
leader
- это главная клавиша, которую мы используем для ключевых действий
<leader>
- вызов главной клавиши<CR>
- это обозначение завершения командыc
- этоctrl
s
- этоshift
Tab
- этоTab
Через =
мы перезаписываем сочетание, а через set
мы добавляем новое без перезаписывания старого
В set
мы передаём первым аругментом режим, вторым наше сочетание, а третьим то, какое мы дополняем
lua / core / mappings.lua
Каждый наш записанный биндинг, мы сможем отследить в строке команды
Дальше нужно установить маппинги в инициализирующий файл
init.lua
Split окон
Сплит окон позволяет нам расположить другое рабочее окно прямо в нашем
Для горизонтального разделения экрана, нужно воспользоваться :split
(или коротко :sp
). Для вертикального :vsplit
(или коротко :vsp
).
Перемещение между окнами: ctrl + w
+ j
(вниз), k
(вверх), h
(влево), l
(вправо).
Для упрощения навигации между окнами, можно забиндить возможность перемещения по ctrl + направление
. Чтобы забиндить перемещение, нужно обратиться к :wincmd
, через который можно так же переместиться на другое окно.
Деление экрана забиндим на |
и \
.
lua / core / mappings.lua
Менеджер плагинов
Для того, чтобы у нас появилась возможность прокачивать наш конфиг более удобными методами и наполнять его плагинами сообщества, есть удобный инструмент для установки пакетов - lazy.nvim
lua / core / configs.lua
Сразу после перезахода в вим, мы встретим ошибку, что плагины не были найдены. Сейчас нам нужно будет установить какой-нибудь плагин.
Располагать все плагины мы можем по документации lazy
в папке plugins
либо в init.lua
, либо в каждом отдельном .lua
файле
Теперь подтянем плагин gitsigns, который будет отображать нам изменения файла относительно того, что есть в git
Описать плагин мы должны по схеме lazy
, где:
- первый параметр - репозиторий плагина
- второй параметр - инициализация запуска, которую мы заносим в
function()
Как запускается каждый плагин, можно посмотреть в документации. У данного плагина установка описана тут (+ там указаны возможные параметры для конфиграции, которые мы можем передать в метод инициализации)
Так будет выглядеть финальный результат:
lua / plugins / gitsigns.lua
Плагин должен автоматически установиться после перезахода. Если это не произошло, то можно сделать это самостоятельно через вызов :Lazy
, где вверху будут отображаться команды установки, обновления, синхронизации и так далее.
Все установленные нами плагины записываются в файл lazy-lock.json
, который фиксирует определённые версии плагинов, занося название пакета, ветку и коммит
Тема
Далее попробуем установить тему.
lua / plugins / onedark.lua
Теперь у нас есть тема с такой подсветкой
За более продвинутую подсветку синтаксиса уже будет отвечать Treesitter
Иногда для подключения других тем нужно воспользоваться командой :colorscheme <тема>
, чтобы подключить тему