- Nerd Fonts (Optional with manual intervention: See Recipes/Customizing Icons)
- Neovim v0.8+ (Not including nightly) zTree-sitter CLI (Note: This is only necessary if you want to use auto_install feature with Treesitter)
- A clipboard tool is necessary for the integration with the system clipboard (see :help clipboard-tool for supported solutions)
- Terminal with true color support (for the default theme, otherwise it is dependent on the theme you are using)
- Optional Requirements:
Make a backup of your current nvim folder
mv ~/.config/nvim ~/.config/nvim.bak
Clean neovim folders (Optional but recommended)
mv ~/.local/share/nvim ~/.local/share/nvim.bak
mv ~/.local/state/nvim ~/.local/state/nvim.bak
mv ~/.cache/nvim ~/.cache/nvim.bak
Clone the repository
git clone --depth 1 https://github.com/benms/neovim-bundle ~/.config/nvim
This configuration includes automated testing to ensure reliability across different platforms.
The repository uses GitHub Actions to automatically test the configuration on:
- Linux (Ubuntu latest) - with Neovim stable and nightly
- macOS (latest)
- Windows (latest)
Tests include:
- Configuration loading verification
- Plugin installation checks
- LSP setup validation
- Syntax validation for all Lua files
- Health check analysis
- Performance benchmarking
You can run the test suite locally to verify your configuration:
# Run all tests
./test/run_tests.sh
# The test script will check:
# - Neovim version compatibility
# - Required dependencies
# - File structure integrity
# - Configuration loading
# - Plugin installation
# - LSP functionality
# - Lua syntax validity
# - Common issues (tabs, trailing whitespace)
# - Health check status
# - Startup performance
The test results will be displayed with color-coded output:
- ✓ Green: Test passed
- ✗ Red: Test failed
- ⚠ Yellow: Warning (non-critical issue)
You can also manually test specific aspects:
# Check configuration loads without errors
nvim --headless -c "echo 'Config OK'" -c "qa"
# Run health check
nvim --headless -c "checkhealth" -c "qa"
# Sync plugins
nvim --headless -c "Lazy! sync" -c "qa"
# Check for Lua syntax errors
find . -name "*.lua" -exec luac -p {} \;
- lazy.nvim - Modern plugin manager for Neovim
- nvim-treesitter - Syntax highlighting and code parsing
- nvim-lspconfig - Quickstart configurations for the Neovim LSP client
- mason.nvim - Portable package manager for Neovim (LSP servers, DAP servers, linters, formatters)
- nvim-cmp - Completion engine
- cmp-nvim-lsp - LSP source for nvim-cmp
- cmp-buffer - Buffer source for nvim-cmp
- cmp-path - Path source for nvim-cmp
- cmp-cmdline - Command line source for nvim-cmp
- telescope.nvim - Fuzzy finder and picker
- hop.nvim - Neovim motions on speed
- neo-tree.nvim - File explorer
- gitsigns.nvim - Git decorations and hunks
- lualine.nvim - Fast and easy statusline
- bufferline.nvim - Snazzy buffer line
- nvim-web-devicons - File icons
- onedark.vim - OneDark color scheme
- toggleterm.nvim - Terminal integration
- none-ls.nvim - Use Neovim as a language server (formatting, diagnostics)
- plenary.nvim - Lua utility functions (dependency for many plugins)
- nui.nvim - UI component library (dependency for neo-tree)
- lsp-progress.nvim - LSP progress indicator
<leader>
- Space key (default leader)
<leader>ff
- Find files<leader>fw
- Live grep (search in files)<leader>fb
- Browse buffers<leader>fh
- Help tags*
- Search for word under cursor<leader>ls
- List document symbols
<leader>gb
- Git branches<leader>gc
- Git commits<leader>gs
- Git status<leader>gf
- Git files<leader>gg
- Open lazygit (if installed)
gd
- Go to definitiongr
- Go to referencesgD
- Go to declarationK
- Hover documentationgi
- Go to implementation<C-k>
- Signature help<leader>wa
- Add workspace folder<leader>wr
- Remove workspace folder<leader>wl
- List workspace folders<leader>lr
- Rename symbol<leader>la
- Code actions<leader>lf
- Format code[d
- Go to previous diagnostic]d
- Go to next diagnostic<leader>e
- Show diagnostic float<leader>q
- Show diagnostics list
f
- Hop to character forward (current line)F
- Hop to character backward (current line)t
- Hop till character forward (current line)T
- Hop till character backward (current line)<leader>hw
- Hop to word<leader>hl
- Hop to line<leader>hp
- Hop to pattern<leader>ha
- Hop anywhere<leader>hc
- Hop to 2 characters
<C-b>
- Scroll docs up<C-f>
- Scroll docs down<C-Space>
- Trigger completion<C-e>
- Abort completion<CR>
- Confirm selection<Tab>
- Next completion item<S-Tab>
- Previous completion item
<C-\>
- Toggle terminal<leader>tl
- Open lazygit terminal<leader>tp
- Open Python REPL<leader>tn
- Open Node REPL- In terminal mode:
<Esc>
orjk
- Exit terminal mode<C-h/j/k/l>
- Navigate between windows<C-w>
- Window commands
- Navigate between buffers using bufferline (mouse click or keyboard shortcuts can be configured)
- Can be toggled and navigated (default keybindings apply when focused)
jj
- Exit insert mode (mapped to<Esc>
):W
- Save file (alias for:w
)