Neovim is my primary code editor. After trying VS Code, JetBrains IDEs, and others, I keep coming back to Neovim for its speed, keyboard-driven workflow, and endless customization. Here's how my setup works.

Why Neovim?
- Speed - Opens instantly, handles large files without lag
- Keyboard-first - Never leave the home row
- Customizable - Every aspect can be configured in Lua
- Portable - Same config works on any machine with Neovim installed
Configuration Structure
My config follows a modular structure:
~/.config/nvim/
โโโ init.lua
โโโ lua/
โ โโโ core/
โ โ โโโ options.lua
โ โ โโโ keymaps.lua
โ โ โโโ autocmds.lua
โ โ โโโ lazy.lua
โ โโโ plugins/
โ โโโ ui.lua
โ โโโ navigation.lua
โ โโโ completion.lua
โ โโโ editor.lua
โ โโโ git.lua
โ โโโ formatting.lua
โ โโโ treesitter.lua
โ โโโ lsp/
โโโ lazy-lock.json
This separation keeps things organized - core settings in one place, plugins grouped by function.
Plugin Manager: lazy.nvim
I use lazy.nvim for plugin management. It handles:
- Lazy loading plugins on demand
- Automatic installation
- Lock file for reproducible setups
- Clean UI for managing updates
Theme: Rose Pine
The Rose Pine colorscheme with the "moon" variant gives a clean, easy-on-the-eyes aesthetic:
{
"rose-pine/neovim",
name = "rose-pine",
config = function()
require("rose-pine").setup({
variant = "auto",
dark_variant = "moon",
})
vim.cmd("colorscheme rose-pine")
end,
}
Navigation
Telescope
Telescope is the heart of my navigation workflow - a fuzzy finder for everything:
Space + sf Search files
Space + sg Live grep (search text)
Space + sh Search help tags
Space + sk Search keymaps
Space + Space Switch buffers
Space + / Fuzzy search current buffer
Space + s. Recent files
Space + sn Search Neovim config
Neo-tree
For file tree navigation, Neo-tree provides a sidebar explorer:
Space + e- Toggle file tree
Completion: nvim-cmp
nvim-cmp handles autocompletion with these sources:
- LSP - Language server completions
- LuaSnip - Snippet expansions
- Path - File path completions
Key bindings:
Ctrl + n/p Navigate items
Enter Confirm selection
Ctrl + Space Trigger completion
Ctrl + l/h Jump in snippets
LSP Integration
Language Server Protocol support provides:
- Go-to definition
- Find references
- Hover documentation
- Rename symbols
- Code actions
The LSP config lives in lua/plugins/lsp/ with server-specific settings.
Git Integration
Lazygit
Space + lg opens Lazygit in a floating terminal - my preferred way to handle commits, branches, and complex git operations.
Gitsigns
Gitsigns shows inline git status:
- Signs in the gutter for added/changed/deleted lines
]c/[c- Jump between hunks- Stage, reset, and preview hunks without leaving the editor
- Current line blame
Editor Enhancements
Which-key
Space + ? shows available keybindings - essential for discovering commands.
Mini.nvim
A collection of small but useful modules:
- mini.ai - Better text objects (
a",i(, etc.) - mini.surround - Add/change/delete surrounding characters
- mini.statusline - Clean status bar
Autopairs
Automatically closes brackets, quotes, and other paired characters.
Trouble
Space + xx opens a better diagnostics panel - errors, warnings, and TODOs in one place.
Formatting
Conform.nvim handles formatting on save:
formatters_by_ft = {
lua = { "stylua" },
typescript = { "prettierd", "prettier" },
typescriptreact = { "prettierd", "prettier" },
}
Treesitter
Treesitter provides:
- Accurate syntax highlighting
- Better code folding
- Incremental selection
- Text objects based on syntax
Core Keymaps
Beyond plugins, these core mappings improve daily use:
Ctrl + h/j/k/l Navigate between splits
Ctrl + s Save file (works in insert mode too)
Esc Clear search highlights
Space + pv Open netrw
Space + tn New tab
AI: Supermaven
Supermaven provides AI-powered code completion - faster than Copilot with better context understanding.
Getting Started
To use my config:
# Backup existing config
mv ~/.config/nvim ~/.config/nvim.bak
# Clone dotfiles and stow
git clone https://github.com/daze17/dotfiles.git ~/dotfiles
cd ~/dotfiles
stow nvim
# Open Neovim - plugins install automatically
nvim
Tips for Learning
- Start with core motions -
hjkl,w,b,e,0,$ - Learn one plugin at a time - Master Telescope before adding more
- Use which-key - Press
Spaceand wait to see options - Customize gradually - Understand what you're adding
The config is in my dotfiles - feel free to explore and adapt it for your workflow. I manage it with GNU Stow alongside my tmux and other configs.