This Neovim configuration is modular and organized for performance, extensibility, and IDE-like features. The entrypoint is init.lua, which loads the core modules:
core/options.lua: Sets global editor options, keymaps, clipboard integration (Docker/WSL/Win32yank), and UI tweaks.core/lazy.lua: Bootstraps and configures lazy.nvim as the plugin manager. It imports plugin categories:- completion, devtools, gittools, lsp, movement, system, ui, utilities
Plugins are organized by functionality in lua/ls-devs/plugins/<category>/. Each plugin file returns a table describing its setup, dependencies, and configuration.
- Plugin Management: Uses lazy.nvim for fast startup and lazy loading.
- Completion: Powered by blink.cmp (v2/main, Rust fuzzy matching), LuaSnip, lspkind, and sources (LSP, buffer, snippets, Copilot, dotenv, sass-variables).
- LSP & Diagnostics: Integrated with lspsaga.nvim, nvim-lspconfig, mason.nvim, and related tools for language server management and UI enhancements.
- Git Integration: Includes diffview.nvim, gitsigns.nvim, fugitive, git-worktree, and more for advanced git workflows.
- Movement: Enhanced navigation with flash.nvim, mini.surround, multiple-cursors, neotab, nvim-spider, nvim-autopairs, smart-splits, treesj, vim-matchup, and others.
- UI: Snacks dashboard, catppuccin theme, diagflow, mini.icons, noice, lualine, tabby, todo-comments, and more.
- Devtools: AsyncRun, codecompanion (AI/MCP/Copilot), overseer, live-server, typescript-tools, kulala.nvim, databases, debugging, lazydev, etc.
- System: Snacks (bigfile, terminal, input, scroll, indent, picker, notifier, dashboard), linting (nvim-lint), formatting (conform.nvim), treesitter, neo-tree, grug-far, markview, sleuth, wildfire, etc.
- Utilities: Mini.comment, trouble, and more.
- Neovim >= 0.12.0
- Git (for plugin manager)
- Node.js (for npm, markdown preview, LSPs)
- Python (for pynvim, Jupyter integration)
- Cargo/Rust (for blink.cmp fuzzy matching, rust_analyzer)
- Go (for some LSPs)
- Java (for JDTLS)
- Deno (for deno LSP)
- Bun (optional, for bun completions)
- SDKMAN (for JVM tools)
- Win32yank (for clipboard integration on WSL)
- direnv (for environment management)
- ghcup (for Haskell tools)
- Spaceship ZSH (for prompt, if using zsh)
- Oh-My-Zsh (for shell plugins)
-
Clone this repo:
git clone <repo-url> ~/.config/nvim
-
Install Neovim >= 0.12.0
-
Install lazy.nvim: The config bootstraps lazy.nvim automatically, but ensure git is installed.
-
Install required system tools:
- Node.js, npm, pnpm, yarn
- Python, pip, pynvim
- Cargo, Rust
- Go
- Java (for JDTLS)
- Deno
- Bun
- SDKMAN
- Win32yank (WSL clipboard)
- direnv
- ghcup
- Spaceship ZSH, Oh-My-Zsh
-
Install plugin dependencies:
- Open Neovim and run:
:Lazy install :Mason install <lsp/tools> - For LuaSnip:
make install_jsregexpif prompted.
- Open Neovim and run:
-
Optional:
- Configure your shell (
~/.zshrc) for PATH and plugin completions. - Set up environment managers (pyenv, nvm, envman, etc.)
- Configure your shell (
- See
lazy-lock.jsonfor all plugin sources and versions. - Shell plugins:
zsh-autosuggestions,zsh-syntax-highlighting, Spaceship ZSH, Oh-My-Zsh - Environment managers: pyenv, nvm, envman, direnv, ghcup, SDKMAN
- Clipboard: win32yank (WSL), OSC52 (Docker)
- Completion: blink.cmp (v2/main), LuaSnip, lspkind, blink.compat, cmp-sass-variables, emmet
- LSP: mason.nvim, nvim-lspconfig, lspsaga.nvim, mason-lspconfig, mason-tool-installer, schemastore
- Git: diffview.nvim, gitsigns.nvim, fugitive, git-conflict, git-worktree
- UI: snacks.nvim (dashboard, input, notifier), catppuccin, diagflow, mini.icons, noice, lualine, tabby, fidget, focus, reactive, stickybuf, todo-comments, nvim-ufo, better-quickfix
- Movement: flash.nvim, mini.surround, multiple-cursors, neotab, nvim-autopairs, nvim-spider, smart-splits, treesj, vim-matchup
- Devtools: AsyncRun, codecompanion (AI/MCP/Copilot + img-clip dep), overseer, live-server, typescript-tools, kulala.nvim, databases, debuggers (DAP), lazydev
- System: snacks.nvim (bigfile, terminal, scroll, indent, picker, dashboard), conform.nvim (formatting), nvim-lint (linting), treesitter, neo-tree, grug-far, markview, wildfire, sleuth, gx, early-retirement
- Run
:Lazy updateto update plugins. - Run
:Mason updatefor LSP/tool updates.
- Check
:checkhealthfor missing dependencies. - Review
~/.zshrcfor PATH and environment setup.
- Plugin authors, Neovim community, ls-devs
For detailed plugin list and versions, see lazy-lock.json.