A modern, feature-rich Neovim configuration focused on productivity and seamless development experience.
- Plugin Management: Uses lazy.nvim for efficient, lazy-loaded plugin management
- LSP Support: Full Language Server Protocol integration via Mason + lspconfig, with auto-formatting on save (conform.nvim)
- Code Completion: nvim-cmp with LSP, LuaSnip snippets, and GitHub Copilot sources
- AI Assistants: GitHub Copilot for inline suggestions and CodeCompanion for chat-based AI (Gemini / OpenAI)
- Testing Framework: Neotest with Elixir adapter for running tests directly from Neovim
- UI Enhancements:
- Trouble.nvim for diagnostics
- Noice.nvim for enhanced command-line UI
- Snacks.nvim for dashboard, notifications, and Zen mode
- Navigation:
- Telescope for fuzzy finding (files, grep, buffers, projects)
- Harpoon for quick file pinning and switching
- Flash.nvim for fast in-buffer motion
- nvim-tree for file tree browsing
- Git Integration: Neogit, Gitsigns, and Git blame
- TMux Integration: Smooth navigation between Neovim and tmux panes
- Neovim >= 0.11.0
- Git
- A Nerd Font (for icons)
- NodeJS (for some LSP features)
-
Backup your existing Neovim configuration if you have one:
mv ~/.config/nvim ~/.config/nvim.backup
-
Clone this repository:
git clone https://github.com/Macnolo0x7D4/nvim-config.git ~/.config/nvim -
Start Neovim:
nvim
-
The configuration will automatically install lazy.nvim and all required plugins on first start.
<leader> is set to <space>.
| Key | Action |
|---|---|
<leader>ff |
Find files |
<leader>fg |
Live grep |
<leader>fb |
Buffers |
<leader>fp |
Projects |
<leader>fh |
Help tags |
<leader>f<space> |
Harpoon marks |
<leader>ha |
Add file to Harpoon |
<leader>hh |
Toggle Harpoon menu |
<leader>1–5 |
Jump to Harpoon slot 1–5 |
<leader>e |
Toggle file tree |
| Key | Action |
|---|---|
gd |
Go to definition |
gi |
Go to implementation |
K |
Hover documentation |
grn |
Rename symbol |
gca |
Code action |
grf |
Find references |
| Key | Action |
|---|---|
<leader>tt |
Run nearest test |
<leader>tf |
Run tests in current file |
<leader>tT |
Run all tests |
<leader>tl |
Run last test |
<leader>ts |
Toggle test summary |
<leader>to |
Toggle output panel |
<leader>tS |
Stop tests |
| Key | Action |
|---|---|
<leader>F |
Format buffer |
s / S |
Flash search / Flash treesitter |
| Key | Action |
|---|---|
<leader>gs |
Open Neogit |
| Key | Action |
|---|---|
<leader>xx |
Toggle Trouble diagnostics |
<leader>cs |
Toggle Trouble symbols |
<leader><space> |
CodeCompanion actions |
| Key | Action |
|---|---|
<leader>wv |
Vertical split |
<leader>ws |
Horizontal split |
<leader>wr |
Equalize splits |
<leader>ww |
Close split |
<leader>z |
Toggle Zen mode |
init.lua— Entry point, loadslua/config/lua/config/options.lua— Neovim optionslua/config/keymaps.lua— Global key mappings (leader, window, visual-mode line movement)lua/config/lazy.lua— Lazy.nvim bootstrap and initializationlua/plugins/— Plugin specs, organised into categories:ai/— Copilot, CodeCompanioncoding/— LSP, completion, Mason, Treesitter, Trouble, Neotesteditor/— Telescope, file tree, conform, motion, Harpoon, tmuxlanguages/— Java (jdtls + DAP), Elixir, databaseui/— Colorscheme, Lualine, Noice, Snacksvcs/— Neogit, Gitsigns, Git blame
- Options — Edit
lua/config/options.lua - Global key mappings — Edit
lua/config/keymaps.lua - Add a plugin — Create a new file in the appropriate
lua/plugins/<category>/directory and return a lazy.nvim spec table; it will be picked up automatically - Remove a plugin — Delete its file from
lua/plugins/ - Change the colorscheme — Edit
lua/plugins/ui/colorscheme.luaand update thecolorize()call
- All plugin authors for their amazing work
- Neovim team for creating such an extensible editor