Настройка
Полное руководство по настройке lazyvimx.
📑 Содержание
- Быстрый старт
- Функция setup
- Цветовые схемы
- Группы буферов
- Включение экстр
- Опции Vim
- Интеграции
- Продвинутая настройка
🚀 Быстрый старт
Минимум
-- lua/config/lazy.lua
return {
spec = {
{ "lazyvimx/nvim", name = "lazyvimx", import = "lazyvimx.boot" },
},
}lazyvimx с настройками по умолчанию; все экстры доступны через :LazyExtras, но выключены.
Рекомендуемый вариант
-- lua/config/lazy.lua
return {
spec = {
{ "lazyvimx/nvim", name = "lazyvimx", import = "lazyvimx.boot" },
{ import = "lazyvimx.extras.core.all" }, -- всё сразу
},
}Способы передать опции
Способ 1 — opts в спеке плагина (рекомендуется):
{
"lazyvimx/nvim",
name = "lazyvimx",
import = "lazyvimx.boot",
opts = {
colorscheme = "catppuccin",
bufferline_groups = {
["React"] = "%.tsx$",
},
},
}Способ 2 — вызов setup():
-- lua/config/lazyvimx.lua
require("lazyvimx").setup({
colorscheme = "catppuccin",
bufferline_groups = {
["React"] = "%.tsx$",
},
})Оба способа равнозначны.
⚙️ Функция setup
Опции глубоко сливаются с настройками по умолчанию (vim.tbl_deep_extend).
Схема конфигурации
{
-- Имя семейства цветовых схем по умолчанию
colorscheme = "catppuccin",
-- Семейства: для каждого — список тёмных и список светлых вариантов.
-- Первый элемент каждого списка — вариант по умолчанию.
colorscheme_households = {
[household: string] = {
{ dark_1, dark_2, ... }, -- [1] тёмные варианты
{ light_1, light_2, ... }, -- [2] светлые варианты
},
},
-- Кастомные группы буферов для bufferline
bufferline_groups = {
[group_name: string] = pattern, -- lua-паттерн по пути файла
},
}Настройки по умолчанию
{
colorscheme = "catppuccin",
colorscheme_households = {
catppuccin = {
{
"catppuccin-macchiato", "catppuccin-frappe", "catppuccin-mocha", "catppuccin",
"catppuccin-darkroast", "catppuccin-draculatte", "catppuccin-espresso",
"catppuccin-gruvbrew", "catppuccin-kanagato", "catppuccin-nightbrew",
"catppuccin-nordiccino", "catppuccin-rosetto", "catppuccin-solarbica",
},
{ "catppuccin-latte" },
},
tokyonight = {
{ "tokyonight-storm", "tokyonight-moon", "tokyonight-night" },
{ "tokyonight-day" },
},
nord = {
{ "nord" },
{ "nord-light" },
},
},
bufferline_groups = {},
}Дополнительные варианты catppuccin (darkroast, nightbrew и другие) добавляет плагин catppuccin-barista, который подключается оверрайдом overrides/other/catppuccin.lua.
🎨 Цветовые схемы
Как выбирается вариант
При старте (и по сигналу от системы) lazyvimx определяет тему ОС и берёт вариант из семейства:
- Тёмная система → список
[1], светлая → список[2] - Если включена экстра
perf.restore-last-colorschemeи последний использованный вариант есть в этом списке — восстанавливается он - Иначе берётся первый вариант списка
Определение темы ОС: на macOS — defaults read -g AppleInterfaceStyle, на Linux — gsettings (gtk-theme или color-scheme).
Своё семейство
require("lazyvimx").setup({
colorscheme = "gruvbox",
colorscheme_households = {
gruvbox = {
{ "gruvbox" }, -- тёмный
{ "gruvbox-light" }, -- светлый
},
},
})Имена вариантов должны начинаться с имени семейства (<household> или <household>-<суффикс>) — по этому префиксу lazyvimx понимает, к какому семейству относится текущая тема.
Важно: кастомизации хайлайтов lazyvimx распространяются только на Catppuccin, Tokyo Night и Nord. Для других тем понадобятся свои оверрайды.
Переключение вручную
:colorscheme catppuccin-latte
:colorscheme tokyonight-stormАвтопереключение вслед за системой
Включается оверрайдом (входит в core.overrides):
{ import = "lazyvimx.overrides.lazyvim.auto-switch-colorscheme-on-signal" }Оверрайд подписывается на autocmd Signal: чтобы Neovim переключил тему, внешний наблюдатель за темой ОС должен послать процессу сигнал (например, SIGUSR1). Пример такого наблюдателя для macOS — ThemeSwitcher из dotfiles автора.
🗂️ Группы буферов
Группировка буферов в bufferline по lua-паттернам пути файла.
require("lazyvimx").setup({
bufferline_groups = {
["React"] = "%.tsx$", -- по расширению
["Styles"] = "%.s?css$",
["Tests"] = "%.test%.", -- по фрагменту имени
["Components"] = "components/", -- по директории
},
})Помимо ваших групп всегда есть встроенные: закреплённые буферы (pinned, с иконкой ), терминальные буферы (term) и всё остальное (ungrouped).
Группы работают через оверрайд overrides/bufferline/add-groups.lua (входит в core.overrides).
🧩 Включение экстр
Способ 1 — UI
:LazyExtras- Секция lazyvimx помечена иконкой
x— включить выбранную экстру- Перезапустить Neovim
Способ 2 — импорты в конфиге
-- lua/plugins/lazyvimx.lua
return {
{ import = "lazyvimx.extras.ui.better-diagnostic" },
{ import = "lazyvimx.extras.ui.winbar" },
{ import = "lazyvimx.extras.motions.langmapper" },
}Способ 3 — всё сразу
{ import = "lazyvimx.extras.core.all" }Или только реестр экстр, без оверрайдов и кеймапов:
{ import = "lazyvimx.extras.core.extras" }Список всех экстр с описаниями — на странице Экстры.
✍️ Опции Vim
lazyvimx задаёт свои опции по событию LazyVimOptionsDefaults (см. boot.lua).
Отступы
vim.o.expandtab = false -- табы, не пробелы
vim.o.smarttab = true
vim.o.shiftwidth = 4
vim.o.tabstop = 4
vim.o.softtabstop = 4
vim.o.autoindent = trueБэкапы и swap
vim.o.swapfile = false
vim.o.backup = true
vim.o.backupdir = "~/.local/state/nvim/backup/"Прозрачность UI
vim.o.pumblend = 15 -- меню автодополнения
vim.o.winblend = 5 -- плавающие окнаТаймауты
vim.o.timeout = true
vim.o.timeoutlen = 500 -- ожидание продолжения комбинации
vim.o.ttimeoutlen = 0 -- без ожидания для кодов клавишПрочее
vim.o.showmode = false -- режим показывает statusline
vim.o.showbreak = "↪" -- маркер переноса строки
vim.o.conceallevel = 2
vim.o.smoothscroll = true
vim.o.autochdir = false
vim.o.spelllang = ""
vim.o.shell = vim.fn.getenv("SHELL")
vim.opt.listchars = { eol = " ", space = " ", tab = " " }
vim.opt.fillchars:append({ diff = " ", eob = " " })Как переопределить
Свои значения — в lua/config/options.lua (LazyVim выполняет его после дефолтов):
vim.o.expandtab = true
vim.o.shiftwidth = 2
vim.o.tabstop = 2Либо по тому же событию:
vim.api.nvim_create_autocmd("User", {
pattern = "LazyVimOptionsDefaults",
callback = function()
vim.o.expandtab = true
vim.o.shiftwidth = 2
end,
})🔗 Интеграции
Chezmoi
После :Lazy update оверрайд auto-apply-chezmoi-on-lazy-update (входит в core.overrides) выполняет:
chezmoi add ~/.config/nvim/lazy-lock.json ~/.config/nvim/lazyvim.jsonЕдинственное условие — установленная утилита chezmoi. Если она не нужна или не установлена, ничего не происходит.
VSCode
При запуске внутри VSCode (расширение vscode-neovim, vim.g.vscode = true) оверрайд overrides/lazyvim/vscode.lua включается автоматически:
- индикатор режима синхронизируется со статус-баром VSCode (нужно расширение
neovim-ui-indicator) <leader>crвызывает нативное переименование VSCodeSnacks.terminalзаменяется наLazyVim.terminal<leader>lи<leader>qqотключены
macOS
- Тема ОС —
defaults read -g AppleInterfaceStyle(для автопереключения цветовой схемы) - Корзина — удаление файлов в neo-tree идёт через утилиту
trash, если она установлена (brew install trash); иначе — обычное удаление - Открытие файлов — команда
openв neo-tree
🧠 Продвинутая настройка
Порядок загрузки
boot.lua— глобальные переменные и подписка наLazyVimOptionsDefaults- Плагины LazyVim
require("lazyvimx").setup()— слияние конфига- Экстры и оверрайды, которые вы импортировали
- Ваши
lua/plugins/*.lua
Локальный конфиг проекта
{ import = "lazyvimx.extras.perf.local-config" }Затем в корне проекта:
-- .nvim.lua или .config/nvim.lua
vim.opt_local.shiftwidth = 2
vim.opt_local.expandtab = trueУсловное включение экстр
return {
{
import = "lazyvimx.extras.ui.winbar",
cond = function()
return not vim.g.vscode
end,
},
}Переопределение кеймапов
-- lua/plugins/keys.lua
return {
{
"LazyVim/LazyVim",
keys = {
{ "<leader>\\", false }, -- выключить кеймап lazyvimx
{ "<leader>|", "<cmd>vsplit<cr>", desc = "Vertical Split" },
},
},
}Выборочные оверрайды
Вместо core.overrides импортируйте категории по отдельности:
return {
{ import = "lazyvimx.overrides.lazyvim" },
{ import = "lazyvimx.overrides.snacks" },
-- bufferline пропускаем
{ import = "lazyvimx.overrides.other" },
}Отладка конфигурации
" Текущий конфиг lazyvimx
:lua vim.print(require("lazyvimx").config)
" Загруженные модули экстр
:lua vim.print(require("lazy.core.config").spec.modules)
" Включена ли конкретная экстра
:lua print(require("lazyvimx.util.general").has_extra("ui.winbar"))🚑 Если что-то не работает
Типовые проблемы — экстры не видны в :LazyExtras, тема не переключается, группы буферов не появляются — разобраны на странице Решение проблем.
📚 См. также
- Экстры — справочник экстр
- API — утилиты
- Архитектура — устройство