Comprehensive guide to all keyboard shortcuts and keybindings in meowvim.
This document provides a complete reference of all keymaps available in
meowvim. The configuration uses <leader> (space key by default) as the
primary prefix for most commands.
- General Bindings
- File Operations
- Buffer Management
- Window Management
- Search & Navigation
- Jump (Flash)
- Code Navigation
- Code Intelligence
- Completion & Copilot
- Git & Version Control
- Testing
- Tasks & Runners
- Code Review
- Debug (DAP)
- Options & UI
- Sessions
- Workspace
- Undo & History
- Notes & Scratch
- Help & Discovery
- Mason
- Yank/Put Operations
- Yank References
- Quit
- Terminal
| Key | Description |
|---|---|
jj |
Exit insert mode (Escape alternative) |
оо |
Exit insert mode (Cyrillic layout support) |
| Key | Description |
|---|---|
Tab |
Next buffer |
Shift+Tab |
Previous buffer |
L |
Next buffer (alternative) |
H |
Previous buffer (alternative) |
| Key | Description |
|---|---|
zg |
Add word to spell file |
zw |
Mark word as incorrect |
Prefix: <leader>f
| Key | Description |
|---|---|
<leader>ff |
Smart find file (context-aware) |
<leader>fF |
Find file (all files) |
<leader>fg |
Find in git files |
<leader>fr |
Recent files |
<leader>fn |
New file (with path creation) |
<leader>fe |
Toggle file explorer |
<leader>fp |
Project picker |
<leader>fs |
Save current file |
<leader>fS |
Save all files |
Prefix: <leader>b
| Key | Description |
|---|---|
<leader>bb |
List buffers (picker) |
<leader>bn |
New buffer |
<leader>br |
Rename buffer |
<leader>bd |
Delete buffer |
<leader>bD |
Force delete buffer |
<leader>bo |
Delete other buffers |
<leader>ba |
Delete all buffers |
Prefix: <leader>m
| Key | Description |
|---|---|
<leader>mm |
Search marks (Snacks picker) |
Note: The bookmark system has been replaced with a simpler marks-based system using Snacks picker.
Prefix: <leader>w
| Key | Description |
|---|---|
<leader>wh |
Focus left window |
<leader>wj |
Focus lower window |
<leader>wk |
Focus upper window |
<leader>wl |
Focus right window |
| Key | Description |
|---|---|
<leader>ws |
Split horizontal |
<leader>wv |
Split vertical |
<leader>wc |
Close window |
<leader>wo |
Close other windows |
| Key | Description |
|---|---|
<leader>wt |
New tab |
<leader>wT |
Close tab |
]t / [t |
Next/Previous tab |
| Key | Description |
|---|---|
<leader>w= |
Equalize windows |
<leader>w> |
Increase width |
<leader>w< |
Decrease width |
<leader>w+ |
Increase height |
<leader>w- |
Decrease height |
| Key | Description |
|---|---|
<leader>wH |
Move window far left |
<leader>wL |
Move window far right |
<leader>wK |
Move window far top |
<leader>wJ |
Move window far bottom |
Prefix: <leader>s
| Key | Description |
|---|---|
<leader>s/ |
Search in project (grep) |
<leader>sb |
Search in open buffers |
<leader>sg |
Search in git (git grep) |
<leader>sr |
Search and replace (Spectre) |
<leader>st |
Search TODO comments |
Note: <leader>sr works in both normal and visual mode for selection-based search.
Prefix: <leader>j and <leader><space>
| Key | Modes | Description |
|---|---|---|
<leader><space> |
n, x, o | Quick jump (Flash) |
<leader>jj |
n, x, o | Flash jump in current window |
<leader>jt |
n, x, o | Flash treesitter (jump to AST nodes) |
<leader>ja |
n, x, o | Flash jump (all windows) |
<leader>jm |
n, x, o | Flash remote operation |
Prefix: <leader>n
| Key | Description |
|---|---|
<leader>nd |
Glance definitions |
<leader>nD |
Pick declaration (picker) |
<leader>nr |
Glance references |
<leader>ni |
Glance implementations |
<leader>nt |
Glance type definitions |
<leader>ns |
Document symbols |
<leader>nw |
Workspace symbols |
| Key | Description |
|---|---|
<leader>nh |
Type hierarchy (subtypes) |
<leader>nH |
Type hierarchy (supertypes) |
<leader>nc |
Call hierarchy (callers) |
<leader>nC |
Call hierarchy (callees) |
Prefix: <leader>c
| Key | Modes | Description |
|---|---|---|
<leader>cc |
n, v | Code action |
<leader>cr |
n | Rename symbol |
<leader>cl |
n | Run code lens |
<leader>cL |
n | Refresh code lenses |
<leader>cf |
n | Format buffer |
<leader>co |
n | Organize imports (TypeScript/JavaScript) |
| Key | Description |
|---|---|
<leader>cd |
Project diagnostics (Trouble) |
<leader>cD |
Buffer diagnostics (Trouble) |
<leader>ch |
Line diagnostics (float) |
<leader>cq |
Quickfix list |
<leader>cs |
Browse symbols (Trouble) |
]d / [d |
Next/Previous diagnostic |
]q / [q |
Next/Previous quickfix item |
]l / [l |
Next/Previous location list item |
]b / [b |
Next/Previous buffer |
Prefix: <leader>cR
Available when editing Cargo.toml files:
| Key | Description |
|---|---|
<leader>cRt |
Toggle crates UI |
<leader>cRr |
Reload crates data |
<leader>cRu |
Update crate under cursor |
<leader>cRU |
Update all crates |
<leader>cRH |
Open crate homepage |
<leader>cRD |
Open crate documentation |
meowvim features two separate systems that work together:
- Completion popup (nvim-cmp) - Shows LSP suggestions, snippets, and buffer words
- Copilot - Inline gray text AI suggestions
Both systems are designed to never interfere with each other, with completely separate keymaps.
Navigation (hjkl-based):
| Key | Description |
|---|---|
<C-j> |
Navigate down in popup (next item) |
<C-k> |
Navigate up in popup (previous item) |
<C-l> |
Accept selected completion (move right/forward) |
<C-Space> |
Manually trigger completion |
<Esc> |
Dismiss popup (and Copilot) |
Documentation:
| Key | Description |
|---|---|
<C-b> |
Scroll documentation up |
<C-f> |
Scroll documentation down |
Snippet Navigation:
| Key | Description |
|---|---|
<Tab> |
Jump to next snippet placeholder (or indent) |
<S-Tab> |
Jump to previous snippet placeholder (or dedent) |
Note: <C-l> is a smart accept: if a Copilot inline suggestion is visible it accepts that; otherwise it confirms the selected cmp item.
Copilot shows gray text suggestions as you type (auto-triggered).
Inline suggestion control (insert mode):
| Key | Description |
|---|---|
<C-l> |
Accept inline suggestion (smart: Copilot first, then selected cmp item) |
<Esc> |
Dismiss inline suggestion and stay in insert mode; if no suggestion, exit insert |
NES – Next Edit Suggestions (normal mode):
| Key | Description |
|---|---|
<M-l> |
Accept NES suggestion and jump to end of edit |
<M-j> |
Accept NES suggestion, stay at cursor |
<M-h> |
Dismiss NES suggestion |
Toggle:
| Key | Description |
|---|---|
<leader>oC |
Toggle Copilot on/off globally |
These keys preserve their normal Vim behavior:
| Key | Behavior |
|---|---|
<Tab> |
Indent (or jump to next snippet placeholder if in snippet) |
<S-Tab> |
Dedent (or jump to previous snippet placeholder if in snippet) |
<CR> |
Always creates a newline (never intercepts for completion) |
:Copilot enable " Enable Copilot
:Copilot disable " Disable Copilot
:Copilot auth " Authenticate with GitHub
:Copilot status " Check Copilot statusOr use the toggle keymap: <leader>oC
The keymaps are designed to be completely conflict-free:
- Completion popup uses
<C-j/k/l>(hjkl pattern) - Copilot inline accept uses
<C-l>(shared smart accept — Copilot takes priority) - Copilot NES uses
<M-l/j/h>(normal mode, entirely separate) <Esc>dismisses Copilot inline suggestion first (staying in insert); falls through to exit insert if no suggestion is visible<Tab>and<Enter>never interfere with completion
This design allows both Copilot and the completion popup to coexist without conflicts.
Prefix: <leader>g
| Key | Description |
|---|---|
<leader>gg |
LazyGit (full TUI) |
<leader>gf |
LazyGit current file |
<leader>gl |
Git log |
<leader>gb |
Git blame line |
<leader>gB |
Git browse (open in browser) |
<leader>gC |
Commit (Neogit) |
<leader>gp |
Pull (Neogit) |
<leader>gP |
Push (Neogit) |
<leader>gw |
Browse branches |
| Key | Description |
|---|---|
<leader>gs |
Stage hunk |
<leader>gr |
Reset hunk |
<leader>gS |
Stage buffer |
<leader>gR |
Reset buffer |
<leader>gv |
Preview hunk |
<leader>gd |
Diff buffer |
]h / [h |
Next/Previous hunk |
Prefix: <leader>gD
| Key | Description |
|---|---|
<leader>gDo |
Open diff explorer |
<leader>gDf |
Diff current file vs HEAD |
<leader>gDh |
Show file history |
| Key | Modes | Description |
|---|---|---|
<leader>gy |
n, v | Copy git link |
<leader>gY |
n, v | Open git link in browser |
| Key | Description |
|---|---|
<leader>go |
Choose ours |
<leader>gt |
Choose theirs |
]x / [x |
Next/Previous conflict |
Prefix: <leader>gx
| Key | Description |
|---|---|
<leader>gxb |
Choose both |
<leader>gxn |
Choose none |
<leader>gxl |
List conflicts |
Prefix: <leader>gh
| Key | Description |
|---|---|
<leader>ghp |
Open pull request |
<leader>ghi |
Open issue |
<leader>ghP |
Search pull requests |
<leader>ghI |
Search issues |
<leader>ght |
Toggle threads |
Prefix: <leader>t
| Key | Description |
|---|---|
<leader>tn |
Run nearest test |
<leader>tf |
Run file tests |
<leader>ts |
Run test suite |
<leader>tS |
Toggle test summary |
<leader>to |
Show test output |
<leader>td |
Debug nearest test |
<leader>tx |
Stop tests |
Prefix: <leader>R
| Key | Description |
|---|---|
<leader>Rr |
Run task template (Overseer) |
<leader>Rl |
Restart last task |
<leader>Ro |
Toggle task list |
Quickfix-based inline code review via quickfix-review.nvim.
Prefix: <leader>r
| Key | Modes | Description |
|---|---|---|
<leader>ri |
n, v | Add Issue comment |
<leader>rs |
n, v | Add Suggestion |
<leader>rn |
n, v | Add Note |
<leader>rp |
n, v | Add Praise |
<leader>rq |
n, v | Add Question |
<leader>rk |
n, v | Add Insight |
<leader>ra |
n | Cycle through add comment types |
<leader>rd |
n, v | Delete comment |
| Key | Description |
|---|---|
<leader>rv |
View comment under cursor |
<leader>re |
Export review to file |
<leader>rc |
Clear all review comments |
<leader>rS |
Review summary |
<leader>rw |
Save review |
<leader>rl |
Load review |
<leader>ro |
Open review list (quickfix window) |
<leader>rg |
Goto real file from review |
<leader>rj |
Cycle to next comment type |
<leader>rh |
Cycle to previous comment type |
| Key | Description |
|---|---|
]r |
Next review comment |
[r |
Previous review comment |
Prefix: <leader>d
| Key | Description |
|---|---|
<leader>dc |
Continue / Start debugging |
<leader>dt |
Terminate debug session |
<leader>ds |
Step over |
<leader>di |
Step into |
<leader>do |
Step out |
<leader>dr |
Run to cursor |
<leader>du |
Toggle debug UI |
<leader>dR |
Open REPL |
Prefix: <leader>db
| Key | Description |
|---|---|
<leader>db |
Toggle breakpoint |
<leader>dB |
Clear all breakpoints |
<leader>dbc |
Conditional breakpoint |
<leader>dbl |
Log point |
<leader>dbe |
Exception breakpoints |
Prefix: <leader>dv
| Key | Modes | Description |
|---|---|---|
<leader>dvs |
n | View scopes |
<leader>dvf |
n | View frames |
<leader>dvh |
n, v | Inspect hover |
<leader>dvp |
n, v | Preview variable |
Prefix: <leader>o
| Key | Description |
|---|---|
<leader>og |
Toggle indent guides |
<leader>on |
Toggle line numbers (cycles: none → normal → relative) |
<leader>ow |
Toggle line wrap |
<leader>os |
Toggle spell check |
<leader>oc |
Toggle cursor line |
<leader>of |
Toggle format on save |
<leader>oa |
Toggle auto-save |
<leader>od |
Toggle dim inactive |
<leader>oe |
Toggle signcolumn |
<leader>ol |
Toggle whitespace characters |
<leader>oh |
Toggle search highlighting |
<leader>ox |
Toggle diagnostics |
<leader>oi |
Toggle inlay hints |
<leader>ok |
Colorscheme switcher (interactive) |
Prefix: <leader>oP
| Key | Description |
|---|---|
<leader>oPs |
Start profiling |
<leader>oPe |
Stop profiling |
<leader>oPl |
Show plugin load times |
<leader>oPr |
Measure render time |
Commands:
:KeymapConflicts- Show keymap conflicts:KeymapList [mode]- List all keymaps for mode:ProfileStart/:ProfileStop- Control profiling:MeowvimProfile- Show plugin load times:MeasureRender- Measure buffer render time:StartupTrends- Analyze startup time trends
Prefix: <leader>q
| Key | Description |
|---|---|
<leader>qq |
Quit all |
<leader>qQ |
Force quit all |
Note: Sessions save and restore automatically via persistence.nvim. No manual session keymaps are needed.
Prefix: <leader>oW
| Key | Description |
|---|---|
<leader>oWa |
Add workspace folder |
<leader>oWR |
Remove workspace folder |
<leader>oWL |
List workspace folders |
Prefix: <leader>u
| Key | Description |
|---|---|
<leader>uu |
Undo history |
<leader>ur |
Redo history |
<leader>uy |
Yank history (Snacks picker) |
Prefix: <leader>N and <leader>.
| Key | Description |
|---|---|
<leader>. |
Open/toggle scratch buffer |
<leader>Nf |
Find scratch buffers |
<leader>Nn |
New named scratch buffer |
Prefix: <leader>h
| Key | Description |
|---|---|
<leader>hh |
Search help |
<leader>hc |
Search commands |
<leader>hk |
Search keymaps |
<leader>hm |
Search man pages |
<leader>hn |
Notification history |
Prefix: <leader>T
| Key | Description |
|---|---|
<leader>Tm |
Open Mason UI |
<leader>Ti |
Install Mason tools |
| Key | Modes | Description |
|---|---|---|
p |
n, x | Put after cursor (Yanky) |
P |
n, x | Put before cursor (Yanky) |
gp |
n, x | Put after and leave cursor after |
gP |
n, x | Put before and leave cursor after |
| Key | Description |
|---|---|
Alt+n |
Next entry in yank ring |
Alt+p |
Previous entry in yank ring |
| Key | Description |
|---|---|
]p |
Put after with indent (linewise) |
[p |
Put before with indent (linewise) |
]P |
Put after with indent (linewise, alternative) |
[P |
Put before with indent (linewise, alternative) |
| Key | Description |
|---|---|
>p |
Put after and shift right |
<p |
Put after and shift left |
>P |
Put before and shift right |
<P |
Put before and shift left |
| Key | Description |
|---|---|
=p |
Put after with filter |
=P |
Put before with filter |
Copy file/line references in OpenCode/Claude-compatible format (e.g. @lua/plugins/copilot.lua:42).
Prefix: <leader>y
| Key | Modes | Description |
|---|---|---|
<leader>yf |
n | Copy file reference (e.g. @lua/plugins/copilot.lua) |
<leader>yl |
n, v | Copy line reference (e.g. @lua/plugins/copilot.lua:42) |
Prefix: <leader>q
| Key | Description |
|---|---|
<leader>qq |
Quit all |
<leader>qQ |
Force quit all |
| Key | Modes | Description |
|---|---|---|
F2 |
n, t | Toggle floating terminal |
Prefix: <leader>S
Treesitter swap operations are available through the group <leader>S. Actual bindings are defined by the nvim-treesitter plugin configuration.
- Smart Find File (
<leader>ff): Intelligently chooses between git files, recent files, or all files based on context - Flash Jump (
<leader><space>or<leader>jj): Quick navigation to any visible text with minimal keystrokes - Code Actions (
<leader>cc): Context-aware actions based on cursor position and LSP capabilities
Many operations work in visual mode:
<leader>sr: Search and replace with selection<leader>gyy/gyo: Git link operations on selected lines<leader>cc: Code actions on selection- All yank/put operations
Flash Jump supports multi-window jumping:
<leader>ja: Jump to any text in any visible window<leader>jm: Remote operations across windows
Quick diagnostic navigation without prefix:
]d: Next diagnostic[d: Previous diagnostic
All keymaps are defined in:
- Main keymaps:
lua/config/keymaps.lua - Plugin-specific:
lua/plugins/*.lua
To customize keymaps, edit these files or add your own in lua/config/custom.lua.
- n: Normal mode
- i: Insert mode
- v: Visual mode
- x: Visual and select mode
- o: Operator-pending mode
- t: Terminal mode
Notation:
<leader>= Space keyCtrl= Control keyShift= Shift keyAlt= Alt/Option key
Documentation last updated: 2026-04-01