My Neovim Keybindings
I switched from Vim to Neovim a few years ago and haven’t looked back. The Lua configuration, better defaults, and plugin ecosystem make it a joy to use.
My config is split across multiple files in ~/.config/nvim/lua/. Here are the keybindings I use daily.
General
| Keybinding | Description |
|---|---|
Space |
Leader key |
jj |
Exit insert mode (instead of Esc) |
<leader>w |
Save all files |
<leader>q |
Quit all |
<leader>wq |
Save and quit all |
Ctrl+a |
Select all text in file |
<leader>; |
Copy text inside double quotes |
Window Navigation
| Keybinding | Description |
|---|---|
Ctrl+h |
Move to left window |
Ctrl+l |
Move to right window |
<leader>v |
Vertical split |
<leader>x |
Close window |
Ctrl+b |
Jump to previous window |
Alt+w |
Go to previous location (jump list) |
Tabs
| Keybinding | Description |
|---|---|
Tab |
Next tab |
File Explorer & Search (Snacks.nvim)
| Keybinding | Description |
|---|---|
Ctrl+n |
Toggle Neo-tree file explorer |
<leader><space> |
Smart find files |
<leader>, |
List open buffers |
Alt+f |
Grep search in project |
LSP Navigation
| Keybinding | Description |
|---|---|
Alt+d |
Go to definition |
gD |
Go to declaration |
Alt+r |
Find references |
gI |
Go to implementation |
gy |
Go to type definition |
<leader>l |
List LSP symbols |
<leader>sS |
List workspace symbols |
<leader>ff |
Format file |
]] |
Jump to next reference |
[[ |
Jump to previous reference |
Git (Snacks.nvim + Lazygit)
| Keybinding | Description |
|---|---|
<leader>gg |
Open Lazygit |
<leader>gb |
Git branches |
<leader>gl |
Git log |
<leader>gL |
Git log for current line |
<leader>gs |
Git status |
<leader>gS |
Git stash |
<leader>gd |
Git diff (hunks) |
<leader>gf |
Git log for current file |
<leader>gm |
Git blame line |
Copilot Chat
| Keybinding | Description |
|---|---|
<leader><Tab> |
Open Copilot Chat prompt |
Alt+c |
Toggle Copilot Chat |
<leader>ce |
Explain selected code |
<leader>cf |
Fix selected code |
<leader>co |
Optimize selected code |
Terminal
| Keybinding | Description |
|---|---|
Ctrl+/ |
Toggle terminal |
Ctrl+t |
Exit terminal mode |
Esc |
Close floating windows |
Why These Bindings?
A few notes on my choices:
Space as leader - Easy to hit with either thumb. Most of my common actions flow from here.
jj to escape - A classic. Your fingers rarely need to leave home row.
Alt key combos - I use Alt for frequent LSP actions (definition, references, grep). I got used to using them in VSCode. Plus they’re slightly faster than leader combos.
Snacks.nvim - Replaced Telescope. The picker is fast and the git integration is solid.
You can find my full config on GitHub.
NOTE: Of course, my main IDE is still VSCode. But Neovim is my go-to for quick edits and terminal work!