Neovim Configuration with LazyVim
A comprehensive Neovim setup with LSP support, AI chat, database integration, and debugging.
Prerequisites
- Neovim >= 0.9.0 (installed via Homebrew)
- Git
- A Nerd Font (for icons)
- Node.js (for some LSP servers and formatters)
- Go (for gopls and delve)
Installation
-
Backup existing configuration (if any):
mv ~/.config/nvim ~/.config/nvim.bak mv ~/.local/share/nvim ~/.local/share/nvim.bak mv ~/.local/state/nvim ~/.local/state/nvim.bak mv ~/.cache/nvim ~/.cache/nvim.bak -
Clone this configuration:
git clone <your-repo-url> ~/.config/nvim -
Start Neovim:
nvimLazy.nvim will automatically install all plugins on first launch.
-
Install LSP servers and tools: After plugins load, run:
:MasonAll required tools should install automatically.
Features
Language Support (LSP + Treesitter)
- Go, Lua, TypeScript, JavaScript, HTML, CSS, JSON, YAML, Markdown, SQL, Makefile
AI Chat Integration
Supports multiple providers via avante.nvim:
- Anthropic Claude
- OpenAI GPT
- Google Gemini
- And more
Set your API keys as environment variables:
export ANTHROPIC_API_KEY="your-key"
export OPENAI_API_KEY="your-key"
export GEMINI_API_KEY="your-key"
Switch providers: :AvanteProvider claude|openai|gemini
Database Integration (vim-dadbod)
:DBUIToggle- Open database UI:DBUIAddConnection- Add a new connection
Connection string examples:
postgresql://user:pass@localhost:5432/dbname
mysql://user:pass@localhost:3306/dbname
sqlite:path/to/db.sqlite
Go Debugging (DAP + Delve)
Full debugging support with breakpoints, stepping, variable inspection.
Key Bindings
Terminal
| Key | Action |
|---|---|
<leader>th |
Open terminal (horizontal split) |
<leader>tv |
Open terminal (vertical split) |
<C-\> |
Toggle floating terminal |
<Esc><Esc> |
Exit terminal mode |
File Explorer (Snacks explorer)
| Key | Action |
|---|---|
<C-S-e> |
Toggle explorer |
<C-S-v> or <C-v> |
Open file in vertical split |
<C-S-h> or <C-x> |
Open file in horizontal split |
<leader>e |
Focus explorer (LazyVim default) |
AI Chat
| Key | Action |
|---|---|
<leader>aa |
Ask AI (with selection in visual mode) |
<leader>ac |
Open AI chat |
<leader>at |
Toggle AI sidebar |
Database
| Key | Action |
|---|---|
<leader>db |
Toggle database UI |
<leader>da |
Add database connection |
Debugging
| Key | Action |
|---|---|
<leader>db |
Toggle breakpoint |
<leader>dB |
Breakpoint with condition |
<leader>dc |
Continue |
<leader>di |
Step into |
<leader>do |
Step out |
<leader>dO |
Step over |
<leader>du |
Toggle DAP UI |
<leader>dT |
Debug Go test |
<leader>dt |
Terminate debug session |
Formatting
| Key | Action |
|---|---|
<leader>cf |
Format buffer |
:FormatToggle |
Toggle auto-format on save |
:FormatDisable |
Disable auto-format |
:FormatEnable |
Enable auto-format |
General
| Key | Action |
|---|---|
<C-s> |
Save file |
<S-h> / <S-l> |
Previous/Next buffer |
<C-h/j/k/l> |
Navigate windows |
<A-j> / <A-k> |
Move line down/up |
File Structure
~/.config/nvim/
├── init.lua # Entry point
├── lua/
│ ├── config/
│ │ ├── lazy.lua # Lazy.nvim bootstrap & LazyVim setup
│ │ ├── options.lua # General Neovim options
│ │ ├── keymaps.lua # Custom key bindings
│ │ └── autocmds.lua # Auto commands
│ └── plugins/
│ ├── lsp.lua # LSP & Treesitter configuration
│ ├── ai.lua # AI chat integration (avante.nvim)
│ ├── dadbod.lua # Database integration
│ ├── dap.lua # Debugging configuration
│ ├── formatting.lua # Auto-formatting (conform.nvim)
│ └── editor.lua # Editor enhancements (snacks explorer, etc.)
Formatters by File Type
| File Type | Formatter |
|---|---|
| Go | gofumpt, goimports |
| Lua | stylua |
| JS/TS/JSX/TSX | prettier |
| HTML/CSS | prettier |
| JSON/YAML | prettier |
| Markdown | prettier |
| SQL | sql-formatter |
Troubleshooting
LSP not working
Run :LspInfo to check status. Run :Mason to verify tools are installed.
Formatting not working
Run :ConformInfo to check formatter status.
Icons not displaying
Install a Nerd Font and configure your terminal to use it.
Ctrl+Shift keybindings not working
Some terminals don't properly send Ctrl+Shift combinations. Use the alternative mappings (<C-v> and <C-x> in snacks explorer).