A modular Neovim configuration built with lazy.nvim, organized under the phaezer namespace.
- π Modular plugin system - Plugins organized by category (ai, completion, editing, lsp, ui, vcs, etc.)
- π¨ Multiple themes - tokyonight (default), kanagawa, rose-pine, catppuccin, everforest, and more
- π Advanced LSP - Custom LSP system with toggle support and multiple diagnostic display modes
- β‘ Modern completion - blink.cmp with LSP, snippets, copilot, and ripgrep integration
- π Powerful navigation - flash.nvim, telescope, neo-tree, and mini.ai
- π€ AI integration - Copilot, Avante, OpenCode, and Sidekick support
- π Git workflows - lazygit, neogit, diffview, fugitive, and gitsigns
- π― Language support - Ansible, Go, Rust, Python, TypeScript, and more
-
Backup your existing Neovim config:
mv ~/.config/nvim ~/.config/nvim.backup
-
Clone this repository:
git clone <repo-url> ~/.config/nvim
-
Start Neovim - lazy.nvim will automatically install plugins:
nvim
.
βββ init.lua # Entry point
βββ lsp/ # LSP server configs (auto-discovered)
β βββ lua_ls.lua
β βββ gopls.lua
β βββ ...
βββ lua/phaezer/
βββ config/ # Core configurations
β βββ init.lua # Config orchestrator
β βββ lsp.lua # LSP system
β βββ keymap.lua # Base keybindings
β βββ opt.lua # Vim options
β βββ ...
βββ core/ # Shared utilities
β βββ keys.lua # Keymap helpers
β βββ icons.lua # Icon definitions
β βββ util.lua # General utilities
βββ plugins/ # Plugin configurations
βββ ai/ # AI assistants
βββ completion/ # Completion engines
βββ editing/ # Text editing
βββ lsp/ # LSP plugins
βββ navigation/ # Navigation tools
βββ ui/ # UI enhancements
βββ vcs/ # Git integrations
βββ ...
Leader key: <Space>
<Space>e- File explorer (neo-tree)<C->` - Toggle terminal<C-/>- Comment line/selectionjk/kj- Exit insert mode
<leader>ws- Horizontal split<leader>wv- Vertical split<leader>wq- Close window<C-h/j/k/l>- Navigate windows
<leader>bl- Next buffer<leader>bh- Previous buffer<leader>bD- Close all but current<leader>bn- New buffer
<leader>xh- Toggle inlay hints<leader>xt- Toggle LSP on/off<leader>xj- Detailed diagnostics<leader>xl- Default diagnostics<leader>xk- Minimal diagnostics<leader>xf- Show diagnostic float
<leader>uh- Toggle cursorline<leader>ur- Toggle relative numbers<leader>uw- Toggle line wrap<leader>ux- Toggle conceal level
gs- Flash jumpgS- Flash treesittergl- End of line ($)gh- Start of line (^)gb- Matching bracket (%)
The configuration includes a custom LSP system with:
Toggle between different diagnostic display styles:
- Minimal - Only underlines and signs
- Default - Current line virtual text
- Detailed - All virtual text with sources
- Detailed Lines - Uses lsp_lines for warnings/errors
Use :SetDiagnosticConfig <mode> or the <leader>x prefix keybindings.
Enable/disable LSP servers without restarting Neovim:
:ToggleLSP <name>- Toggle specific server:ToggleLSPSelect- Interactive selection menu<leader>xt- Keybinding for toggle menu
Create a file in lsp/<servername>.lua with:
return {
name = 'servername',
cmd = { 'language-server-command' },
filetypes = { 'filetype' },
root_markers = { '.git' },
settings = { ... }
}Uses blink.cmp with:
- LSP completions (highest priority)
- Copilot integration
- Path and buffer completions
- Snippet expansion (LuaSnip)
- Ripgrep project-wide search
- Dictionary for markdown/norg
Keybindings:
<C-;>- Show all completions<C-.>- Show buffer/dictionary<C-,>- Show Copilot suggestions<leader>kc- Toggle completion on/off
Default theme: tokyonight
Available themes:
- tokyonight
- kanagawa
- rose-pine
- catppuccin
- everforest
- gruvdark
- onedark
- nightfox
Change theme:
NVIM_THEME=kanagawa nvimOr set in your shell profile:
export NVIM_THEME=kanagawa- ansible-vim for syntax
- ansiblels LSP
- Custom playbook runner:
<leader>ar
- gopls LSP
- go.nvim for Go-specific features
- DAP debugging support
- rustaceanvim for enhanced Rust support
- rust-analyzer LSP
- DAP debugging support
- basedpyright LSP
- ruff for linting/formatting
- DAP debugging support
- ts_ls LSP
- deno_ls for Deno projects
Enable experimental plugins with:
NVIM_EXPERIMENTAL=1 nvim:SetDiagnosticConfig <mode>- Change diagnostic display:ToggleLSP <name>- Toggle LSP server:ToggleLSPSelect- Interactive LSP toggle
Place development plugins in ~/projects/nvim/ with pattern matching phaezer.
- Create file in
lua/phaezer/plugins/<category>/<name>.lua - Return a lazy.nvim spec table
- Configure keybindings in the
keysproperty orlua/phaezer/config/keymap.lua
- lazy.nvim documentation
- Neovim LSP documentation
- CLAUDE.md - Detailed architecture guide for AI assistants