lazyvimx

Слой улучшений поверх LazyVim: 51 опциональная экстра и 40 оверрайдов плагинов.

Идея простая: LazyVim остаётся как есть, а всё остальное — доводка интерфейса, навигация, git-воркфлоу, поддержка русской раскладки — включается по кусочкам. Не нравится экстра — не включаете, и её будто нет.

📑 Содержание

✨ Возможности

🎨 Интерфейс

  • Глубокая кастомизация тем — Catppuccin, Tokyo Night и Nord
  • Автопереключение светлой/тёмной темы вслед за системной (macOS)
  • Единый стиль UI — скруглённые рамки, согласованные размеры окон, кастомные иконки
  • Улучшенный дашборд с ASCII-артом и анимацией
  • Счётчики использований символов прямо в коде, как в JetBrains IDE
  • Диагностика одной строкой у курсора

🚀 Продуктивность

  • Умные буферы — группы в bufferline, автоочистка, изоляция по табам
  • Навигация по синтаксическому дереву — перемещение и перестановка узлов
  • Движения по подсловам — w/e/b понимают camelCase
  • Git-воркфлоу — ревью GitLab MR из редактора, разрешение конфликтов, просмотр удалённых репозиториев
  • Отладка JS/TS через js-debug-adapter

⚙️ Удобства

  • Русская раскладка через langmapper — без переключения на английскую
  • Безопасная работа с sshfs-маунтами — запись «на месте», без побитых прав и симлинков
  • Автосинхронизация в chezmoi при обновлениях плагинов
  • Локальные конфиги проектов (.nvim.lua)
  • Режим VSCode для гибридного воркфлоу
  • Автообновление пакетов Mason

📦 Установка

Требования

  • Neovim >= 0.10.0
  • Lua 5.1 или LuaJIT в PATH (brew install luajit) — нужно экстре motions.better-move-between-words: luarocks.nvim собирает рок luautf8 для движений по не-ASCII подсловам и без системного Lua падает

🚀 Выберите свой вариант

Впервые здесь? В examples/ лежат готовые конфигурации:

  • Minimal — только оверрайды, самый быстрый старт
  • Full-Featured — все 51 экстра
  • VSCode User — для расширения VSCode Neovim
  • Russian Keyboard — с поддержкой русской раскладки

Быстрый старт

💡 Живой пример: конфигурация автора.

  1. Создайте ~/.config/nvim/init.lua:
local lazy_opts = {
	spec = { { "lazyvimx/nvim", name = "lazyvimx", import = "lazyvimx.boot" } },

	install = { colorscheme = { "catppuccin", "tokyonight" } },
	checker = { enabled = true, notify = false },
	change_detection = { enabled = false },
	diff = { cmd = "diffview.nvim" },

	ui = {
		backdrop = 100,
		border = "rounded",
		icons = { keys = "󰥻" },
	},
}

-- Bootstrap lazy.nvim
local lazy_path = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
local lazy_url = "https://github.com/folke/lazy.nvim.git"

if not vim.loop.fs_stat(lazy_path) then
	vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazy_url, lazy_path })
end

vim.opt.rtp:prepend(lazy_path)

require("lazy").setup(lazy_opts)
  1. Запустите Neovim:
nvim

На первом запуске lazyvimx сам установит LazyVim и все нужные плагины.

  1. Настройте lazyvimx (по желанию):

Вариант А — opts прямо в init.lua:

local lazy_opts = {
  spec = {
    {
      "lazyvimx/nvim",
      name = "lazyvimx",
      import = "lazyvimx.boot",
      opts = {
        colorscheme = "catppuccin",
        bufferline_groups = {
          -- ["имя группы"] = "lua-паттерн",
        },
      },
    },
  },
  -- ... остальные настройки
}

Вариант Б — отдельный файл ~/.config/nvim/lua/plugins/lazyvimx.lua:

return {
  "lazyvimx/nvim",
  name = "lazyvimx",
  opts = {
    colorscheme = "catppuccin",
    bufferline_groups = {
      -- ["имя группы"] = "lua-паттерн",
    },
  },
}

Все опции, включая настройку светлых/тёмных вариантов тем (colorscheme_households), — в Настройка.

  1. Включите экстры:

Через UI :LazyExtras (рекомендуется) или импортами в конфиге:

-- lua/plugins/extras.lua
return {
  -- Все оверрайды плагинов
  { import = "lazyvimx.extras.core.overrides" },
  -- Дальше — что нужно
  { import = "lazyvimx.extras.ui.better-diagnostic" },
  { import = "lazyvimx.extras.motions.langmapper" },
}

🗂️ Структура проекта

lazyvimx/
├── lua/lazyvimx/
│   ├── boot.lua              # Bootstrap-конфигурация
│   ├── init.lua              # Главный модуль с setup()
│   ├── extras/               # Опциональные модули (51 + 5 core)
│   │   ├── core/             # Сборные модули: all, overrides, extras, keys, colorschemes
│   │   ├── ui/               # Интерфейс (22)
│   │   ├── motions/          # Навигация (6)
│   │   ├── buf/              # Буферы (4)
│   │   ├── git/              # Git (4)
│   │   ├── lang/             # Языки (4)
│   │   ├── perf/             # Производительность (4)
│   │   ├── coding/           # Инструменты кода (2)
│   │   ├── linting/          # Линтеры (2)
│   │   ├── colorschemes/     # Цветовые схемы (1)
│   │   ├── dap/              # Отладка (1)
│   │   └── test/             # Тестирование (1)
│   ├── overrides/            # Кастомизация плагинов (40)
│   │   ├── lazyvim/          # LazyVim (10)
│   │   ├── snacks/           # Snacks.nvim (9)
│   │   ├── bufferline/       # Bufferline (6)
│   │   └── other/            # Прочие плагины (15)
│   └── util/                 # Утилиты
│       ├── general.lua       # Общие (цвета, тема системы, проверка экстр)
│       └── layout.lua        # Размеры сайдбаров и панелей
└── init.lua                  # Защита от прямого запуска репозитория

🎯 Core-модули

Рекомендуемая настройка

Включите всё разом — core.all через :LazyExtras или импортом:

{ import = "lazyvimx.extras.core.all" }

Внутри:

  • overrides — все 40 кастомизаций плагинов
  • extras — все функциональные экстры
  • colorschemes — дополнительные цветовые схемы
  • keys — кастомные кеймапы
  • плюс уведомление, если не хватает рекомендуемых экстр LazyVim

По отдельности

{ import = "lazyvimx.extras.core.overrides" }     -- Оверрайды плагинов
{ import = "lazyvimx.extras.core.extras" }        -- Все экстры
{ import = "lazyvimx.extras.core.keys" }          -- Кеймапы
{ import = "lazyvimx.extras.core.colorschemes" }  -- Цветовые схемы

📚 Документация

🎨 Заметные экстры

Интерфейс

  • ui.better-diagnostic — диагностика одной строкой у курсора
  • ui.better-float — единый стиль плавающих окон
  • ui.symbol-usage — счётчики использований символов
  • ui.better-explorer — файловый менеджер Yazi
  • ui.winbar — путь к файлу над окном

Навигация

  • motions.langmapper — русская раскладка без переключения
  • motions.better-move-between-words — движения по подсловам (нужен Lua 5.1/LuaJIT в PATH, см. Требования)
  • motions.sibling-swap — перестановка узлов tree-sitter
  • motions.splitting-joining-blocks — разбивка/склейка блоков кода

Git

  • git.gitlab — ревью GitLab MR из редактора
  • git.conflicts — визуальное разрешение конфликтов
  • git.remote-view — открытие удалённых репозиториев локально

Прочее

  • buf.remote-mounts — безопасная работа с sshfs
  • coding.comments — комментирование с контекстом и генерация JSDoc
  • test.jest — Jest в Neotest

⌨️ Кеймапы

lazyvimx добавляет 60+ кастомных кеймапов. Самые ходовые:

Каждый день:

  • <leader><space> — найти файлы (smart)
  • <leader>cr — LSP-переименование с живым превью
  • gr — референсы в peek-окне
  • H / L — предыдущий/следующий буфер
  • <leader>fy — файловый менеджер Yazi
  • w / b / e — движения по подсловам

Продуктивность:

  • d — удаление без копирования в регистр
  • <C-S-j> / <C-S-k> — перемещение строк
  • <C-,> / <C-.> — перестановка параметров и элементов массива
  • <leader>ct — разбить/склеить блок кода
  • gx / gX — открыть удалённый git-репозиторий

Git и GitLab:

  • <leader>gL* — весь воркфлоу GitLab MR (ревью, комментарии, approve, merge)
  • go — открыть файл или выделение в GitHub/GitLab

📖 Полный список: Кеймапы — с описаниями и указанием, какая экстра нужна для каждого кеймапа.

🔧 Конфигурация

Цветовые схемы

lazyvimx переключает светлый/тёмный вариант темы вслед за системой:

require("lazyvimx").setup({
	colorscheme = "catppuccin",
})

Варианты собраны в «семейства» (colorscheme_households): для каждой темы — список тёмных и список светлых. Из коробки настроены Catppuccin, Tokyo Night и Nord; тёмная система — берётся тёмный вариант, светлая — светлый. Подробности и формат — в Настройка.

Группы буферов

Кастомные группы в bufferline:

require("lazyvimx").setup({
	bufferline_groups = {
		["React"] = "%.tsx$",
		["Tests"] = "%.test%.",
	},
})

🤝 Интеграции

Chezmoi

При обновлении плагинов lazyvimx добавляет lazy-lock.json и lazyvim.json в chezmoi — если утилита chezmoi установлена.

VSCode

Режим для расширения VSCode Neovim:

  • синхронизация индикатора режима со статус-баром
  • адаптированные кеймапы
  • переименование через нативный VSCode

macOS

  • определение системной темы для автопереключения цветовых схем
  • удаление файлов в корзину в neo-tree

🌟 Философия

  1. Не ломать LazyVim — все улучшения опциональны и включаются экстрами
  2. Единый стиль — общая тема и визуальный язык во всех плагинах
  3. Умные дефолты — работает из коробки, настраивается при желании
  4. Внимание к деталям — от рамок окон до поведения курсора

📊 Статистика

  • 51 опциональная экстра в 11 категориях
  • 40 оверрайдов для глубокой кастомизации
  • Сотни кастомных хайлайтов для Catppuccin, Tokyo Night и Nord
  • 60+ кастомных кеймапов

🔗 Ссылки

📈 Активность

Repo Activity

🤝 Контрибьютинг

Баги и идеи — в issues. Как устроен проект и как написать свою экстру — в Гайд контрибьютора.

📄 Лицензия

Лицензия та же, что у LazyVim.

🙏 Благодарности

Построен поверх превосходного LazyVim от folke.


Автор: Aleksey Imuzov (@aimuzov)

● NORMAL ● v1.13.0 ~/lazyvimx/getting-started.md сделано с ❤️ aimuzov Top