A modular, high-performance Neovim configuration built as a hobby project for daily development and text editing. This setup prioritizes productivity, customizability, and keymap-driven workflows.
This is a personal Neovim configuration built for daily development work. Previously used Packer as a plugin manager, now optimized with Lazy.nvim for better performance and lazy-loading capabilities.
Note
This is a feature-rich configuration. It may require more resources on older machines. Configuration is actively maintained and updated based on personal development needs.
- Fast startup time with lazy-loaded plugins
- Modular structure for easy customization
- Comprehensive keymap bindings for complete editor control
- Smooth, responsive UI with enhanced visuals
- Full LSP support with multiple language servers
- Smart autocompletion with snippet engine
- Integrated terminal with multiple layout options
- Git integration with branch/log/diff visualization
- Diagnostic viewer with error/warning management
- Fast file and buffer navigation
- Custom command-line with syntax highlighting
- Smart notification and message routing
- Beautiful diagnostic displays
- Intuitive symbol and reference navigation
- Code formatting and refactoring tools
- Neovim v0.10.0 or higher
- Git - For plugin management
- npm - For language server installation
- Nerd Font - For icons (e.g., FiraCode Nerd Font)
-
ripgrep - Fast file searching
brew install ripgrep # macOS sudo apt-get install ripgrep # Ubuntu/Debian sudo dnf install ripgrep # Fedora
-
Delta - Beautiful git diff viewer
brew install git-delta # macOS sudo apt-get install git-delta # Ubuntu/Debian
- Python -
pip install black flake8 mypy pylint - Rust -
cargo install rust-analyzer - Node.js - Included TypeScript/JavaScript support
mv ~/.config/nvim ~/.config/nvim.backupgit clone https://github.com/syed-913/Neo-Vim-Config ~/.config/nvimOpen Neovim and run:
:MasonInstall recommended servers:
- pyright (Python)
- lua_ls (Lua)
- bashls (Bash)
- html (HTML)
- cssls (CSS)
- ts_ls (TypeScript/JavaScript)
Or auto-install with :MasonInstallAll
:checkhealth nvim.lsp
:checkhealth snacks
:checkhealth noice~/.config/nvim/
├── init.lua # Main entry point, gloabl keymap maintainer and configuration loader
└── lua
└── plugins
├── completion.lua # Autocompletion and snippet engine settings
├── core.lua # Essential Neovim options and core plugin setup
├── formatting.lua # Code formatting and linting configuration
├── misc.lua # Small, standalone utility plugins
├── noice.lua # Highly customized UI for messages, cmdline, and popupmenu
├── snacks.lua # Main configuration for the Snacks.nvim utility suite
├── snacks_picker.lua # Fuzzy finder and picker settings for Snacks
├── snacks_ui.lua # UI-specific enhancements powered by Snacks
├── snacks_utils.lua # Custom helper functions and utilities for Snacks
├── trouble.lua # Diagnostics, LSP references, and quickfix management
└── visuals.lua # Aesthetic plugins (statusline, bufferline, themes)t
| Plugin | Purpose |
|---|---|
| lazy.nvim | Fast plugin manager with lazy-loading |
| Plugin | Purpose |
|---|---|
| nvim-lspconfig | LSP client configuration |
| mason.nvim | LSP/formatter/linter installer |
| mason-lspconfig.nvim | Mason and lspconfig integration |
| nvim-cmp | Autocompletion engine |
| cmp-nvim-lsp | LSP source for nvim-cmp |
| cmp-buffer | Buffer words completion |
| cmp-path | Path completion |
| cmp-cmdline | Command-line completion |
| LuaSnip | Snippet engine |
| cmp_luasnip | Snippet source for nvim-cmp |
| Plugin | Purpose |
|---|---|
| noice.nvim | Beautiful UI for command-line, messages, popupmenu |
| trouble.nvim | Diagnostics and references viewer |
| snacks.nvim | Utilities including picker, terminal, explorer |
| nvim-notify | Notification system |
| nvim-web-devicons | File icons |
| Plugin | Purpose |
|---|---|
| snacks.nvim picker | Fast file search and navigation |
| snacks.nvim explorer | File tree explorer |
| snacks.nvim terminal | Integrated terminal with multiple layouts |
| Plugin | Purpose |
|---|---|
| nvim-treesitter | Syntax highlighting and tree-sitter integration |
| vim-sneak | Fast motion with 2-character search |
gd - Go to definition
gD - Go to declaration
K - Hover documentation
gr - Find references
gi - Go to implementation
gy - Go to type definition
<C-k> - Signature help
<leader>ff - Find files
<leader>fg - Find git files
<leader>fr - Find recent files
<leader>, - Open buffer picker
<leader>bn - Next buffer
<leader>bp - Previous buffer
<leader>bd - Delete buffer
<leader>/ - Grep search
<leader>sg - Grep in project
<leader>sw - Grep word under cursor
<leader>sk - Search keymaps
<leader>sC - Search commands
<C-t> - Toggle terminal (bottom)
<leader>tf - Floating terminal
<leader>ts - Split terminal
<leader>tv - Vertical split terminal
<Esc> - Exit terminal mode
<leader>xx - Toggle all diagnostics
<leader>xX - Toggle buffer diagnostics
<leader>xL - Toggle location list
<leader>xQ - Toggle quickfix list
<leader>cs - Toggle symbols
]d - Next diagnostic
[d - Previous diagnostic
<leader>rn - Rename symbol
<leader>ca - Code actions
<leader>fm - Format code
<leader>nh - Noice history
<leader>nl - Last message
<leader>ne - Show errors
<leader>nw - Show warnings
<leader>nd - Dismiss notifications
<leader>gb - Git branches
<leader>gl - Git log
<leader>gs - Git status
<leader>gd - Git diff
- Press
<leader>ffto open file finder - Type to search for files
- Press
<Enter>to open or<C-v>for vertical split
- Hover over a symbol and press
Kfor documentation - Press
gdto jump to definition - Press
grto find all references - Press
<leader>cafor code actions
- Press
<C-t>to open terminal at bottom - Run commands as normal
- Press
qto hide (terminal keeps running) - Press
<C-t>again to show
- Press
<leader>/for grep search - Type search pattern
- Navigate results with arrow keys
- Press
<Enter>to jump to match
- Press
<leader>xxto open diagnostics - Press
gbto filter current buffer only - Press
sto toggle by severity level - Press
<Enter>to jump to error location
Edit lua/plugins/lsp.lua and add to ensure_installed:
ensure_installed = {
"pyright",
"rust_analyzer", -- Add new server
},Then run :Mason to install.
Add to init.lua:
vim.keymap.set("n", "<leader>custom", function()
-- Your custom function
end, { desc = "Custom action" })Edit visuals.lua:
vim.cmd.colorscheme("tokyonight-night")Popular themes: catppuccin, gruvbox, nord, dracula, onedark
Create new plugin file in lua/plugins/ and Lazy.nvim will auto-load it:
return {
{
"author/plugin-name",
event = "VeryLazy",
opts = { },
},
}:LspInfo
: checkhealth nvim.lspSolution: Run :Mason and install language servers.
Press <C-Space> in insert mode. Verify LSP is attached with :LspInfo.
Run :Snacks profile to identify slow plugins. Consider lazy-loading heavy plugins.
Install a Nerd Font and set it in your terminal. Restart Neovim.
Check if registered: :map <your-keymap>
Verify the configuration file is loaded properly.
This is a comprehensive configuration with many features. On older machines, you may experience:
- Longer startup time (typically 100-300ms)
- Memory usage increase with all plugins loaded
- Slight lag with large files or heavy operations
To optimize:
- Disable unused plugins in
lua/plugins/ - Use
:Snacks profileto find bottlenecks - Enable selective language servers
Press <leader>sC to search and execute any command.
Press <leader>sk to search keymaps by name and execute them.
Press <leader>/ and start typing to search entire project instantly.
Keep terminal running in background with q, work in editor, then toggle back with <C-t>.
Press gr then <leader>cl to view all references in a nice organized list.
Built with inspiration from the Neovim community and these excellent plugins:
This configuration is actively maintained and updated. Watch the repository for new features and improvements.
Made with dedication by @syed-913