A modern, feature-rich Neovim configuration built with lazy.nvim plugin manager, designed for efficient development workflows.
- 🎨 Beautiful UI: Tokyo Night color scheme with custom transparency and colors
- 🔍 Fuzzy Finding: FZF integration for files, buffers, and more
- 🌳 File Explorer: NvimTree for intuitive file management
- 📝 Language Support: LSP configuration for multiple languages
- 🔧 Auto-completion: Comprehensive completion with nvim-cmp
- 🐛 Debugging: Built-in DAP (Debug Adapter Protocol) support
- 🎯 Syntax Highlighting: TreeSitter for advanced syntax highlighting
- 🚦 Git Integration: Gitsigns and Fugitive for version control
- 🔗 Tmux Integration: Seamless navigation between Nvim and Tmux panes
- 🎛️ Status Line: Custom Lualine configuration
~/.config/nvim/
├── init.lua # Entry point
├── lazy-lock.json # Plugin version lock file
├── lua/
│ ├── config/ # Core configuration
│ │ ├── autocmds.lua # Auto commands
│ │ ├── globals.lua # Global variables
│ │ ├── keymaps.lua # Key mappings
│ │ ├── lazy.lua # Plugin manager setup
│ │ └── options.lua # Neovim options
│ ├── plugins/ # Plugin configurations
│ │ ├── colorscheme.lua # Tokyo Night theme
│ │ ├── fzf-lua.lua # Fuzzy finder
│ │ ├── nvim-cmp.lua # Auto-completion
│ │ ├── nvim-lspconfig.lua # LSP configuration
│ │ ├── nvim-tree.lua # File explorer
│ │ ├── nvim-treesitter.lua# Syntax highlighting
│ │ └── ... # Other plugins
│ ├── servers/ # LSP server configurations
│ │ ├── bashls.lua # Bash LSP
│ │ ├── clangd.lua # C/C++ LSP
│ │ ├── gopls.lua # Go LSP
│ │ ├── pyright.lua # Python LSP
│ │ ├── ts_ls.lua # TypeScript LSP
│ │ └── ... # Other language servers
│ └── utils/ # Utility modules
│ ├── diagnostics.lua # Diagnostic configuration
│ └── lsp.lua # LSP utilities
└── README.md # This file
- Neovim >= 0.9.0
- Git
- Node.js (for some LSP servers)
- ripgrep (for better search performance)
- fd (optional, for faster file finding)
brew install neovimsudo apt update
sudo apt install neovimsudo pacman -S neovim# Install ripgrep and fd
brew install ripgrep fd # macOS
sudo apt install ripgrep fd-find # Ubuntu/Debian
sudo pacman -S ripgrep fd # Arch Linux
# Install Node.js (if not already installed)
brew install node # macOS
sudo apt install nodejs npm # Ubuntu/Debian
sudo pacman -S nodejs npm # Arch Linux-
Backup existing configuration (if any):
mv ~/.config/nvim ~/.config/nvim.backup
-
Clone this configuration:
git clone <your-repo-url> ~/.config/nvim
-
Start Neovim:
nvim
-
Wait for plugins to install - lazy.nvim will automatically install all plugins on first launch.
- Line numbers: Enabled with relative numbering
- Indentation: 2 spaces, smart indenting
- Search: Case-insensitive with smart case
- Clipboard: Integrated with system clipboard
- Undo: Persistent undo history
- Folding: TreeSitter-based folding
The leader key is set to <Space> (space bar).
| Key | Action |
|---|---|
<C-h/j/k/l> |
Navigate between windows |
<C-d>/<C-u> |
Half page down/up (centered) |
n/N |
Next/previous search result (centered) |
<leader>bn/<leader>bp |
Next/previous buffer |
| Key | Action |
|---|---|
<leader>e |
Toggle file explorer |
<leader>m |
Focus file explorer |
<leader>rc |
Edit config file |
| Key | Action |
|---|---|
<leader>sv/<leader>sh |
Split vertically/horizontally |
<C-Up/Down/Left/Right> |
Resize windows |
| Key | Action |
|---|---|
J |
Join lines (keep cursor position) |
</> (visual) |
Indent and reselect |
- Bash - bashls
- C/C++ - clangd
- Docker - dockerls
- Go - gopls
- JavaScript/TypeScript - ts_ls
- JSON - jsonls
- Lua - lua_ls
- Python - pyright
- Solidity - solidity_ls_nomicfoundation
- Tailwind CSS - tailwindcss
- YAML - yamlls
- Auto-completion with context-aware suggestions
- Diagnostics with inline error/warning display
- Go to definition/references
- Hover documentation
- Code formatting
- Refactoring support
| Plugin | Description |
|---|---|
| lazy.nvim | Modern plugin manager |
| tokyonight.nvim | Beautiful color scheme |
| nvim-lspconfig | LSP configuration |
| nvim-cmp | Auto-completion engine |
| nvim-treesitter | Syntax highlighting |
| Plugin | Description |
|---|---|
| fzf-lua | Fuzzy finder |
| nvim-tree | File explorer |
| gitsigns.nvim | Git integration |
| vim-fugitive | Git commands |
| lualine.nvim | Status line |
| trouble.nvim | Diagnostics list |
| nvim-dap | Debug adapter protocol |
| Plugin | Description |
|---|---|
| mini.nvim | Collection of minimal plugins |
| ccc.nvim | Color picker and highlighter |
| tailwind-tools.nvim | Tailwind CSS utilities |
| vim-tmux-navigator | Tmux integration |
-
Create a new file in
lua/plugins/directory:-- lua/plugins/my-plugin.lua return { "author/plugin-name", config = function() -- Plugin configuration here end, }
-
Restart Neovim - lazy.nvim will automatically install the new plugin.
-
Create a new file in
lua/servers/directory:-- lua/servers/mylang.lua return { settings = { -- Language server specific settings }, }
-
Add the server to your LSP configuration.
Edit lua/config/keymaps.lua to add or modify key mappings:
vim.keymap.set("n", "<leader>my", "<Cmd>MyCommand<CR>", { desc = "My custom command" })- Plugins not loading: Run
:Lazy syncto update plugins - LSP not working: Check if language server is installed:
:LspInfo - Treesitter errors: Update parsers:
:TSUpdate - Performance issues: Check health:
:checkhealth
Run comprehensive health check:
:checkhealth:Lazy " Open plugin manager
:Lazy sync " Update all plugins
:Lazy clean " Remove unused plugins
:Lazy profile " View startup performanceFeel free to submit issues and enhancement requests! To contribute:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
This configuration is open source and available under the MIT License.
Happy coding with Neovim! 🎉