Keymaps
The rule: common operations get memorable mappings; uncommon operations get commands and pickers. Every Blak-registered keymap has a description and appears in :BlakKeys. :BlakKeys also lists shortcuts in the current buffer, including plugin-owned
mappings and Blak UI controls. Inspect other global plugin mappings with
:BlakPick keymaps or :map.
The leader is <Space>. Local leader is \.
All core keymaps are defined in lua/blak/core/keymaps.lua. Extras and user.lua can add more — they show up in :BlakKeys too.
Custom keymaps
Section titled “Custom keymaps”Add or override mappings from lua/blak/user.lua with the keymaps list:
return { keymaps = { { key = "<leader>sg", action = "<cmd>BlakPick grep<cr>", description = "Grep" }, { mode = { "n", "x" }, key = "<leader>y", action = '"+y', description = "Yank to clipboard", }, { key = "<leader>rn", action = function() vim.lsp.buf.rename() end, description = "Rename symbol", }, { key = "<leader>/", disable = true }, },}Active entries require description so they stay discoverable through :BlakKeys.
Use mode for one mode or a list of modes, and use a command string or Lua
function for action. Use disable = true to disable a Blak mapping. To move a
default action, disable the old key and add the new one.
Edit & navigation
Section titled “Edit & navigation”| Mode | Mapping | Action |
|---|---|---|
| n | <Esc> |
Clear search highlight |
| n,i,x,s | <C-s> |
Save (where Neovim leaves it free) |
| n,i,x,s | <D-s> |
Save (where the UI forwards Command-s) |
| n | <leader>qq |
Quit all (:qa) |
<C-s> and <D-s> are bound only if your config or a plugin hasn’t already claimed them. See map_if_available in the source.
Find (pickers)
Section titled “Find (pickers)”| Mapping | Action |
|---|---|
<leader><space> |
Find files |
<leader>/ |
Grep |
<leader>ff |
Find files |
<leader>fg |
Grep |
<leader>fb |
Buffers |
<leader>fr |
Recent files |
<leader>fc |
Commands |
<leader>fk |
Keymaps |
<leader>fh |
Help |
All dispatch through the picker provider — see Pickers.
Buffers
Section titled “Buffers”| Mapping | Action |
|---|---|
<leader>` |
Toggle last file (native alternate file) |
<leader>bd |
Delete buffer (via Snacks bufdelete if available) |
<leader>bn |
Next buffer |
<leader>bp |
Previous buffer |
Windows
Section titled “Windows”| Mapping | Action |
|---|---|
<leader>ws |
Split window below |
<leader>wv |
Split window right |
These use Neovim’s native :rightbelow split and :rightbelow vsplit. Blak
only binds them when those keys are still free, so an existing user or plugin
mapping wins.
Explorer
Section titled “Explorer”| Mapping | Action |
|---|---|
<leader>e |
Configured explorer (Oil by default; Snacks when editor.snacks-explorer is enabled) |
Blak leaves Neovim’s native - motion alone.
Terminal
Section titled “Terminal”| Mapping | Action |
|---|---|
<leader>tt |
Toggle the configured terminal provider |
Change this mapping with terminal.toggle_key in lua/blak/user.lua. Set it
to false to leave terminal toggling command-only.
Git (gitsigns)
Section titled “Git (gitsigns)”| Mode | Mapping | Action |
|---|---|---|
| n | ]h |
Next hunk (or ]c inside a diff) |
| n | [h |
Previous hunk (or [c inside a diff) |
| n | <leader>gs |
Stage hunk |
| v | <leader>gs |
Stage selection range |
| n | <leader>gr |
Reset hunk |
| v | <leader>gr |
Reset selection range |
| n | <leader>gS |
Stage buffer |
| n | <leader>gR |
Reset buffer |
| n | <leader>gp |
Preview hunk |
| n | <leader>gb |
Blame line (full) |
| n | <leader>gd |
Diff this |
LSP (bound on LspAttach)
Section titled “LSP (bound on LspAttach)”These map only when an LSP server attaches to the current buffer.
| Mapping | Action |
|---|---|
gd |
Go to definition |
gD |
Go to declaration |
gI |
Go to implementation |
gr |
References |
K |
Hover |
<leader>ca |
Code action |
<leader>cr |
Rename |
<leader>cf |
Format buffer (Conform → LSP fallback) |
<leader>cs |
Document symbols (picker) |
<leader>cS |
Workspace symbols (picker) |
See the LSP guide.
Diagnostics
Section titled “Diagnostics”| Mapping | Action |
|---|---|
]d |
Next diagnostic (jumps + opens float) |
[d |
Previous diagnostic (jumps + opens float) |
<leader>xx |
Diagnostics picker |
<leader>xd |
Line diagnostic float |
Blak & Lazy
Section titled “Blak & Lazy”| Mapping | Action |
|---|---|
<leader>ll |
:Lazy |
<leader>lo |
:Blak |
<leader>lc |
:BlakConfig |
<leader>lu |
:BlakUpdate |
<leader>lU |
:BlakUpgrade |
<leader>lr |
:BlakRollback |
<leader>ld |
:BlakDoctor |
<leader>le |
:BlakExtras |
<leader>lk |
:BlakKeys |
<leader>ln |
:BlakNews |
<leader>ls |
:BlakSplash |
<leader>lt |
:BlakToolsInstall |
<leader>lT |
:BlakTreesitterInstall |
<leader>? |
:BlakKeys |
Toggles
Section titled “Toggles”| Mapping | Action |
|---|---|
<leader>uf |
Toggle format-on-save (buffer) |
:BlakFormatToggle! toggles it globally. See Formatting.
Keymaps added or changed by extras
Section titled “Keymaps added or changed by extras”| Extra | Mapping | Action |
|---|---|---|
editor.window-navigation |
<C-h> / <C-j> / <C-k> / <C-l> |
Move between windows |
ui.comfy-line-numbers |
label + j / k |
Comfy vertical motions |
ui.comfy-line-numbers |
label + <Down> / <Up> |
Comfy vertical motions |
ui.zen |
<leader>uz |
Zen mode |
ui.indent |
<leader>ug |
Toggle indent guides |
git.lazygit |
<leader>gg |
LazyGit float |
git.diffview |
<leader>gD |
DiffviewOpen |
git.diffview |
<leader>gH |
File history |
git.gitbrowse |
<leader>gB |
Open file/line on the Git remote |
git.neogit |
<leader>gn |
Open Neogit |
ai.claudecode |
<leader>ac |
Toggle Claude Code |
ai.claudecode |
<leader>aF |
Focus Claude Code |
ai.claudecode |
<leader>ar |
Resume Claude Code |
ai.claudecode |
<leader>aC |
Continue Claude Code |
ai.claudecode |
<leader>am |
Select Claude model |
ai.claudecode |
<leader>ab |
Add current buffer |
ai.claudecode |
<leader>as |
Send visual selection |
ai.claudecode |
<leader>aA |
Accept Claude Code diff |
ai.claudecode |
<leader>aD |
Deny Claude Code diff |
ai.sidekick |
<C-.> |
Focus Sidekick CLI |
ai.sidekick |
<leader>aa |
Toggle Sidekick CLI |
ai.sidekick |
<leader>as |
Select Sidekick CLI |
ai.sidekick |
<leader>ad |
Detach Sidekick CLI session |
ai.sidekick |
<leader>af |
Send file to Sidekick |
ai.sidekick |
<leader>at |
Send current context to Sidekick |
ai.sidekick |
<leader>av |
Send visual selection to Sidekick |
ai.sidekick |
<leader>ap |
Pick Sidekick prompt |
ai.supermaven |
<leader>aS |
Toggle Supermaven |
ai.supermaven |
<M-l> |
Accept inline suggestion |
ai.supermaven |
<M-w> |
Accept one word |
ai.supermaven |
<M-]> |
Clear inline suggestion |
debug.dap |
<leader>db |
Toggle breakpoint |
debug.dap |
<leader>dc |
Continue debugging |
debug.dap |
<leader>di / <leader>do / <leader>dO |
Step into / over / out |
debug.dap |
<leader>dr |
Toggle DAP REPL |
debug.dap |
<leader>dt |
Terminate debug session |
debug.dap |
<leader>du |
Toggle dap-ui |
lang.python-pro |
<leader>cv |
Select Python virtualenv |
test.neotest |
<leader>Tn |
Run nearest test |
test.neotest |
<leader>Tf |
Run current file tests |
test.neotest |
<leader>Td |
Debug nearest test |
test.neotest |
<leader>Ts |
Toggle test summary |
test.neotest |
<leader>To |
Open test output |
test.neotest |
<leader>TO |
Toggle test output panel |
editor.aerial |
<leader>co |
Toggle code outline |
editor.flash |
s / S |
Flash jump / Treesitter select |
editor.flash |
r / R |
Flash remote / Treesitter search |
editor.flash |
<C-s> |
Toggle Flash while searching (command-line) |
editor.grug-far |
<leader>sr |
Search and replace (project-wide) |
editor.scratch |
<leader>. |
Toggle scratch buffer |
editor.scratch |
<leader>S |
Select scratch buffer |
editor.overseer |
<leader>oo |
Toggle tasks |
editor.overseer |
<leader>or |
Run task |
editor.overseer |
<leader>oq |
Task quick action |
editor.refactoring |
<leader>re |
Extract function |
editor.refactoring |
<leader>rf |
Extract function to file |
editor.refactoring |
<leader>rv |
Extract variable |
editor.refactoring |
<leader>ri |
Inline variable |
editor.refactoring |
<leader>rI |
Inline function |
editor.refactoring |
<leader>rp |
Print debug variable |
editor.refactoring |
<leader>rc |
Cleanup debug prints |
editor.render-markdown |
<leader>um |
Toggle Markdown rendering |
editor.todo-comments |
]t / [t |
Next / previous TODO comment |
editor.todo-comments |
<leader>xT |
TODO quickfix |
editor.trouble |
<leader>xX |
Trouble diagnostics |
editor.trouble |
<leader>xQ |
Trouble quickfix |
editor.trouble |
<leader>xL |
Trouble loclist |
editor.trouble |
<leader>cO |
Trouble symbols |
editor.trouble |
<leader>cR |
Trouble references |
editor.harpoon |
<leader>ha |
Add current file to Harpoon |
editor.harpoon |
<leader>hh |
Toggle Harpoon quick menu |
editor.harpoon |
<leader>hp / <leader>hn |
Previous / next Harpoon file |
editor.harpoon |
<leader>h1-<leader>h4 |
Jump to Harpoon file |
editor.neotree |
<leader>E |
Toggle Neo-tree |
editor.snacks-explorer |
<leader>e |
Snacks explorer |
editor.snacks-terminal |
terminal.toggle_key |
Snacks terminal |
Design notes
Section titled “Design notes”- No hidden chords. If a Blak mapping isn’t in this page or in
:BlakKeys, it doesn’t exist in core, enabled extras, oruser.lua. - Mnemonic grouping.
<leader>f*find,<leader>b*buffers,<leader>g*git,<leader>c*code,<leader>x*diagnostics,<leader>l*Lazy/Blak,<leader>t*terminal,<leader>u*UI toggles,<leader>w*windows,<leader>q*quit. map_if_available. Keys like<C-s>and<D-s>are only set when not already mapped — they yield to native bindings or another plugin’s claim.- Extras and user config add to or retarget this list. Run
:BlakKeysto see what your enabled extras anduser.luahave registered.