Tip
π·πΊ Π ΡΡΡΠΊΠ°Ρ Π²Π΅ΡΡΠΈΡ: README.ru.md
An enhancement layer on top of LazyVim: 49 optional extras and 39 plugin overrides.
The idea is simple: LazyVim stays untouched, and everything else β UI polish, navigation, git workflow, Russian keyboard support β is enabled piece by piece. Don't like an extra? Don't enable it, and it's like it doesn't exist.
- Features Β· Installation Β· Structure Β· Core Modules
- Documentation Β· Highlighted Extras Β· Keymaps Β· Configuration
- Integrations Β· Philosophy Β· Stats Β· Links
- Deep theme customization β Catppuccin, Tokyo Night, and Nord
- Automatic light/dark switching following the system theme (macOS)
- Consistent UI style β rounded borders, aligned window sizes, custom icons
- Enhanced dashboard with ASCII art and animation
- Symbol usage counters inline in code, JetBrains-style
- Single-line diagnostics at the cursor
- Smart buffers β bufferline groups, auto-cleanup, per-tab isolation
- Syntax-tree navigation β moving and swapping nodes
- Subword motions β
w/e/bunderstand camelCase - Git workflow β GitLab MR review inside the editor, conflict resolution, browsing remote repositories
- JS/TS debugging via js-debug-adapter
- Russian keyboard layout via langmapper β no switching to English
- Safe editing on sshfs mounts β in-place writes, no broken permissions or symlinks
- Auto-sync to chezmoi on plugin updates
- Per-project local configs (
.nvim.lua) - VSCode mode for a hybrid workflow
- Automatic Mason package updates
- Neovim >= 0.10.0
- Lua 5.1 or LuaJIT in
PATH(brew install luajit) β required bymotions.better-move-between-words: luarocks.nvim builds theluautf8rock for non-ASCII subword motions and fails without a system Lua
New to lazyvimx? Ready-to-use configurations live in examples/:
- Minimal β overrides only, the fastest start
- Full-Featured β all 50 extras
- VSCode User β for the VSCode Neovim extension
- Russian Keyboard β with Russian layout support
π‘ Real-world example: the author's configuration.
- Create
~/.config/nvim/init.lua:
local lazy_opts = {
spec = { { "aimuzov/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)- Start Neovim:
nvimOn first launch lazyvimx installs LazyVim and all required plugins by itself.
- Configure lazyvimx (optional):
Option A β opts right in init.lua:
local lazy_opts = {
spec = {
{
"aimuzov/lazyvimx",
import = "lazyvimx.boot",
opts = {
colorscheme = "catppuccin",
bufferline_groups = {
-- ["group name"] = "lua-pattern",
},
},
},
},
-- ... other settings
}Option B β a separate file ~/.config/nvim/lua/plugins/lazyvimx.lua:
return {
"aimuzov/lazyvimx",
opts = {
colorscheme = "catppuccin",
bufferline_groups = {
-- ["group name"] = "lua-pattern",
},
},
}All options, including light/dark theme variants (colorscheme_households), are covered in
Configuration.
- Enable extras:
Via the :LazyExtras UI (recommended) or imports in your config:
-- lua/plugins/extras.lua
return {
-- All plugin overrides
{ import = "lazyvimx.extras.core.overrides" },
-- Then whatever you need
{ import = "lazyvimx.extras.ui.better-diagnostic" },
{ import = "lazyvimx.extras.motions.langmapper" },
}lazyvimx/
βββ lua/lazyvimx/
β βββ boot.lua # Bootstrap configuration
β βββ init.lua # Main module with setup()
β βββ extras/ # Optional modules (50 + 5 core)
β β βββ core/ # Bundles: all, overrides, extras, keys, colorschemes
β β βββ ui/ # Interface (21)
β β βββ motions/ # Navigation (6)
β β βββ buf/ # Buffers (4)
β β βββ git/ # Git (4)
β β βββ lang/ # Languages (4)
β β βββ perf/ # Performance (4)
β β βββ coding/ # Coding tools (2)
β β βββ linting/ # Linters (2)
β β βββ colorschemes/ # Colorschemes (1)
β β βββ dap/ # Debugging (1)
β β βββ test/ # Testing (1)
β βββ overrides/ # Plugin customizations (39)
β β βββ lazyvim/ # LazyVim (9)
β β βββ snacks/ # Snacks.nvim (9)
β β βββ bufferline/ # Bufferline (6)
β β βββ other/ # Other plugins (15)
β βββ util/ # Utilities
β βββ general.lua # General (colors, system theme, extras checks)
β βββ layout.lua # Sidebar and panel sizes
βββ init.lua # Guard against using the repo directly
Enable everything at once β core.all via :LazyExtras or an import:
{ import = "lazyvimx.extras.core.all" }Inside:
- overrides β all 39 plugin customizations
- extras β all feature extras
- colorschemes β additional colorschemes
- keys β custom keymaps
- plus a notification if recommended LazyVim extras are missing
{ import = "lazyvimx.extras.core.overrides" } -- Plugin overrides
{ import = "lazyvimx.extras.core.extras" } -- All extras
{ import = "lazyvimx.extras.core.keys" } -- Keymaps
{ import = "lazyvimx.extras.core.colorschemes" } -- Colorschemes- EXTRAS.md β reference for all 50 extras (π·πΊ)
- CONFIGURATION.md β configuration and options (π·πΊ)
- KEYBINDINGS.md β all keymaps (π·πΊ)
- ARCHITECTURE.md β how it all works (π·πΊ)
- API.md β utilities and functions (π·πΊ)
- FAQ.md β frequently asked questions (π·πΊ)
- TROUBLESHOOTING.md β problem solving (π·πΊ)
ui.better-diagnosticβ single-line diagnostics at the cursorui.better-floatβ consistent floating window styleui.symbol-usageβ symbol usage countersui.better-explorerβ the Yazi file managerui.winbarβ file path above the window
motions.langmapperβ Russian layout without switchingmotions.better-move-between-wordsβ subword motions (needs Lua 5.1/LuaJIT inPATH, see Prerequisites)motions.sibling-swapβ swapping tree-sitter nodesmotions.splitting-joining-blocksβ splitting/joining code blocks
git.gitlabβ GitLab MR review inside the editorgit.conflictsβ visual conflict resolutiongit.remote-viewβ opening remote repositories locally
buf.remote-mountsβ safe editing over sshfscoding.commentsβ context-aware commenting and JSDoc generationtest.jestβ Jest in Neotest
lazyvimx adds 60+ custom keymaps. The most used ones:
Every day:
<leader><space>β find files (smart)<leader>crβ LSP rename with live previewgrβ references in a peek windowH/Lβ previous/next buffer<leader>fyβ the Yazi file managerw/b/eβ subword motions
Productivity:
dβ delete without clobbering the register<C-S-j>/<C-S-k>β move lines<C-,>/<C-.>β swap parameters and array elements<leader>ctβ split/join a code blockgx/gXβ open a remote git repository
Git & GitLab:
<leader>gL*β the whole GitLab MR workflow (review, comments, approve, merge)goβ open a file or selection in GitHub/GitLab
π Full list: Keybindings β with descriptions and the extra each keymap requires.
lazyvimx switches between light and dark theme variants following the system:
require("lazyvimx").setup({
colorscheme = "catppuccin",
})Variants are grouped into "households" (colorscheme_households): each theme gets a list of
dark and a list of light variants. Catppuccin, Tokyo Night, and Nord are configured out of
the box; a dark system picks a dark variant, a light one picks light. Details and format β
in Configuration.
Custom bufferline groups:
require("lazyvimx").setup({
bufferline_groups = {
["React"] = "%.tsx$",
["Tests"] = "%.test%.",
},
})After a plugin update lazyvimx adds lazy-lock.json and lazyvim.json to chezmoi β as long
as the chezmoi binary is installed.
A mode for the VSCode Neovim extension:
- mode indicator synced to the status bar
- adjusted keymaps
- rename via native VSCode
- system theme detection for automatic colorscheme switching
- deleting files to the trash in neo-tree
- Don't break LazyVim β every enhancement is optional and enabled via extras
- One style β a shared theme and visual language across all plugins
- Smart defaults β works out of the box, configurable when desired
- Attention to detail β from window borders to cursor behavior
- 50 optional extras across 11 categories
- 39 overrides for deep customization
- Hundreds of custom highlights for Catppuccin, Tokyo Night, and Nord
- 60+ custom keymaps
Bugs and ideas go to issues. How the project works and how to write your own extra β in Contributing.
Same license as LazyVim.
Built on top of the excellent LazyVim by folke.
Author: Aleksey Imuzov (@aimuzov)