Skip to content

aimuzov/lazyvimx

Repository files navigation

lazyvimx

Version Neovim License Extras

Tip

πŸ‡·πŸ‡Ί Русская вСрсия: README.ru.md

Enhanced LazyVim configuration with extensive customizations, UI improvements, and workflow optimizations.

lazyvimx is a comprehensive enhancement layer built on top of LazyVim that provides 48 optional extras and 33 override modules to create a highly polished, feature-rich Neovim experience.

✨ Features

🎨 Visual Enhancements

  • Advanced theming with deep customization for Catppuccin and Tokyo Night
  • Automatic theme switching based on system light/dark mode
  • Enhanced UI components with consistent rounded borders and custom icons
  • Better statusline with custom mode indicators and visual elements
  • Improved dashboard with custom ASCII art and styled sections
  • Symbol usage indicators showing references and implementations inline

πŸš€ Productivity Boosters

  • Smart buffer management with groups, automatic cleanup, and tab scoping
  • Enhanced code navigation with tree-sitter aware motions
  • Better diagnostics display with inline messages
  • Git workflow improvements including GitLab MR integration and conflict resolution
  • Advanced completion with Blink.cmp integration
  • AI coding assistant support via Avante

βš™οΈ Quality of Life

  • Russian keyboard support via langmapper
  • Repeatable actions for buffer operations
  • Auto-save to chezmoi on LazyVim updates
  • Local project configuration support
  • VSCode integration for hybrid workflows
  • Performance optimizations including inactive LSP cleanup

πŸ“¦ Installation

Prerequisites

  • Neovim >= 0.10.0

πŸš€ Choose Your Setup

New to lazyvimx? Check out ready-to-use configurations in examples/:

Quick Start

πŸ’‘ Real Example: See author's configuration for a production setup.

  1. Create ~/.config/nvim/init.lua with the following content:
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)
  1. Start Neovim:
nvim

That's it! lazyvimx will automatically install LazyVim and all required plugins on first launch.

  1. Configure lazyvimx (optional):

You can configure lazyvimx in two ways:

Option A: Add opts directly in init.lua:

local lazy_opts = {
  spec = {
    {
      "aimuzov/lazyvimx",
      import = "lazyvimx.boot",
      opts = {
        colorscheme = "catppuccin",
        colorscheme_flavors = {
          catppuccin = { "catppuccin-macchiato", "catppuccin-latte" },
          tokyonight = { "tokyonight-storm", "tokyonight-day" },
        },
        bufferline_groups = {
          -- Define custom buffer groups
          -- ["name"] = "regex_pattern",
        }
      }
    }
  }
  -- ... other settings
}

Option B: Create a separate file ~/.config/nvim/lua/plugins/lazyvimx.lua:

return {
  "aimuzov/lazyvimx",
  opts = {
    colorscheme = "catppuccin",
    colorscheme_flavors = {
      catppuccin = { "catppuccin-macchiato", "catppuccin-latte" },
      tokyonight = { "tokyonight-storm", "tokyonight-day" },
    },
    bufferline_groups = {
      -- Define custom buffer groups
      -- ["name"] = "regex_pattern",
    },
  },
}
  1. Enable extras:

Use the LazyVim extras UI (:LazyExtras) to enable lazyvimx extras (recommended), or add them to your config:

-- In lua/plugins/extras.lua
return {
  -- Includes all enhancements for lazyvim
  { import = "lazyvimx.extras.core.overrides" },
  -- Add more extras as needed
  { import = "lazyvimx.extras.ui.better-diagnostic" },
  { import = "lazyvimx.extras.motions.langmapper" },
}

πŸ—‚οΈ Project Structure

lazyvimx/
β”œβ”€β”€ lua/lazyvimx/
β”‚   β”œβ”€β”€ boot.lua              # Bootstrap configuration
β”‚   β”œβ”€β”€ init.lua              # Main module with setup function
β”‚   β”œβ”€β”€ extras/               # Optional feature modules (48 total)
β”‚   β”‚   β”œβ”€β”€ core/            # Core enhancements (overrides, keys)
β”‚   β”‚   β”œβ”€β”€ ui/              # UI improvements (19 modules)
β”‚   β”‚   β”œβ”€β”€ coding/          # Coding tools (2 modules)
β”‚   β”‚   β”œβ”€β”€ motions/         # Motion enhancements (6 modules)
β”‚   β”‚   β”œβ”€β”€ buf/             # Buffer management (3 modules)
β”‚   β”‚   β”œβ”€β”€ git/             # Git integration (4 modules)
β”‚   β”‚   β”œβ”€β”€ lang/            # Language support (2 modules)
β”‚   β”‚   β”œβ”€β”€ linting/         # Linting tools (2 modules)
β”‚   β”‚   β”œβ”€β”€ ai/              # AI assistants (1 module)
β”‚   β”‚   β”œβ”€β”€ dap/             # Debugging (1 module)
β”‚   β”‚   β”œβ”€β”€ perf/            # Performance (3 modules)
β”‚   β”‚   └── test/            # Testing (1 module)
β”‚   β”œβ”€β”€ overrides/           # Plugin customizations (33 total)
β”‚   β”‚   β”œβ”€β”€ lazyvim/         # LazyVim core overrides (8 modules)
β”‚   β”‚   β”œβ”€β”€ snacks/          # Snacks.nvim overrides (7 modules)
β”‚   β”‚   β”œβ”€β”€ bufferline/      # Bufferline overrides (6 modules)
β”‚   β”‚   └── other/           # Other plugins (13 modules)
β”‚   └── util/                # Utility functions
β”‚       β”œβ”€β”€ general.lua      # General utilities
β”‚       └── layout.lua       # Layout management
└── init.lua                 # Entry point guard

🎯 Core Extras

Recommended Setup

Enable all core enhancements core.all via :LazyExtras (recommended) or add the import to your config:

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

This includes:

  • Overrides: All plugin customizations
  • Extras: All available extras
  • Keys: Custom keybindings
  • Notifications: Missing extras warnings

Individual Core Components

{ import = "lazyvimx.extras.core.overrides" }  -- Plugin overrides
{ import = "lazyvimx.extras.core.extras" }     -- All extras
{ import = "lazyvimx.extras.core.keys" }       -- Custom keybindings

πŸ“š Documentation

🎨 Highlighted Extras

UI Enhancements

  • ui.better-diagnostic - Inline diagnostic messages
  • ui.better-float - Consistent floating window styles
  • ui.symbol-usage - Reference/definition counters
  • ui.better-explorer - Yazi file manager integration
  • ui.winbar - File path in window bar

Coding Tools

  • coding.emmet - HTML/CSS expansion
  • coding.comments - Enhanced commenting with documentation generation

Motions

  • motions.langmapper - Russian keyboard support
  • motions.better-move-between-words - Subword navigation
  • motions.sibling-swap - Tree-sitter based swapping
  • motions.splitting-joining-blocks - Smart block manipulation

Git Integration

  • git.gitlab - GitLab MR review
  • git.conflicts - Visual conflict resolution
  • git.remote-view - Open remote repos locally

AI & Testing

  • ai.avante - Cursor AI IDE emulation
  • test.jest - Jest testing framework

⌨️ Key Mappings

lazyvimx adds 30+ custom keybindings. Here are the highlights:

Most Used:

  • <leader><space> - Find files
  • <leader>cr - LSP rename (live preview)
  • gr - Go to references (peek view)
  • H / L - Previous/Next buffer
  • <leader>fy - Open Yazi file explorer
  • w / b / e - Smart word motions (subword aware)

Productivity:

  • d - Delete without yanking (no clipboard pollution)
  • <C-S-j> / <C-S-k> - Move lines up/down
  • <C-.> / <C-,> - Swap function parameters/array elements
  • <leader>ct - Smart split/join code blocks
  • gx / gX - Open/browse remote Git repositories

Git & GitLab:

  • <leader>gL* - Full GitLab MR workflow (review, comment, approve, merge)
  • go - Open file/selection in GitHub/GitLab browser

πŸ“– Full Reference: See KEYBINDINGS.md for complete list with descriptions and requirements.

πŸ”§ Configuration

Colorscheme

lazyvimx supports automatic light/dark variant switching:

require("lazyvimx").setup({
	colorscheme = "catppuccin",
	colorscheme_flavors = {
		catppuccin = { "catppuccin-macchiato", "catppuccin-latte" },
	},
})

The system automatically switches between dark (index 1) and light (index 2) based on system theme (macOS only).

Buffer Groups

Define custom bufferline groups:

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

🀝 Integration

Chezmoi

lazyvimx automatically syncs lazy-lock.json and lazyvim.json to chezmoi on updates if DOTFILES_SRC_PATH is set.

VSCode

Special VSCode integration mode with:

  • Mode indicator synchronization
  • Adjusted keybindings
  • Native VSCode rename integration

macOS

  • System theme detection for auto-switching colorschemes
  • Trash integration for safe file deletion in neo-tree
  • System open commands

🌟 Philosophy

lazyvimx enhances LazyVim by:

  1. Preserving LazyVim's design - All enhancements are opt-in via extras
  2. Maintaining consistency - Unified theming and visual language
  3. Improving usability - Smart defaults and workflow optimizations
  4. Supporting customization - Flexible configuration system
  5. Ensuring quality - Careful attention to polish and detail

πŸ“Š Stats

  • 48 optional extras across 11 categories
  • 33 override modules for deep customization
  • 150+ custom highlights for Catppuccin theme
  • 70+ custom highlights for Tokyo Night theme
  • 30+ custom keybindings

πŸ”— Links

πŸ“ˆ Activity

Repo Activity

πŸ“„ License

This project follows the same license as LazyVim.

πŸ™ Credits

Built on top of the excellent LazyVim by folke.


Author: Aleksey Imuzov (@aimuzov)

About

No description, website, or topics provided.

Resources

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors