osfeed.dev
Projects/folke / which-key.nvim

WhichKey

Keybinding help popups for Neovim

Get it on GitHub
Unclaimed

Written by @iluxav from the project's code and releases, not by its maintainers. Last updated for v3.17.0 (2025-02-22), so it may lag behind newer releases.

Are you @folke?Claim it, and your coding agent keeps it current with each release
v3.17.0 · 9 things you can do 2 changes to know before upgrading
Follow GitHub

Discover available Neovim keybindings as you type and choose commands from a popup.

What you can do with WhichKey

Discover available keybindings as you type in Neovim.

Present at v3.12.1
Good to know

Auto triggers do not override existing mappings, including single-key built-ins; configure those triggers manually.

Customize the popup layout, sorting, key labels and delay.

Present at v3.12.1
Good to know

Choose classic, modern or helix presets; popup delay is independent of timeoutlen.

Organize keybindings into named groups and generate buffer or window selection menus.

Present at v3.12.1
Good to know

Dynamic mappings created with expand support only function-valued right-hand sides. The v3 mapping format uses add.

Identify keybindings with configurable icons and colors.

Present at v3.12.1
Good to know

Full icon support needs mini.icons or nvim-web-devicons; a Nerd Font is optional.

Look up built-in operators, motions, text objects and window commands.

Present at v3.12.1
Good to know

Preset help describes built-in bindings; it does not create keybindings.

Browse local and global marks before choosing a jump.

Present at v3.12.1
Good to know

Uses the built-in marks plugin on apostrophe and backtick.

Inspect registers while choosing text to insert or paste.

Present at v3.12.1
Good to know

Uses the registers plugin on double quote in normal mode or Ctrl-r in insert mode.

Choose spelling suggestions in a popup.

Present at v3.12.1
Good to know

With the spelling plugin enabled, z= replaces the full-screen suggestions list; the default limit is 20 suggestions.

Repeat commands while keeping their keybinding popup open.

Present at v3.12.1
Good to know

Enable loop in show options for Hydra mode; Escape closes the popup.

Before you upgrade WhichKey

Newest first
WhichKey release history 7
v3.17.0

Hide mapping hints when the corresponding real keybinding does not exist.

Details

Set `real = true` in a mapping specification to hide it without an actual keymap. Window presets now describe moving windows to each far edge.

Install v3.17.0 with a Neovim plugin manager; requires Neovim 0.9.4 or newer.

Improved: Organize keybindings into named groups and generate…Improved: Look up built-in operators, motions, text objects a…

Seeded by @iluxav with Codex

Read the evidence
v3.16.0

Look up the keys for moving backward and forward through Neovim's change list.

Details

Built-in help now describes `g;` and `g,`. Trigger creation respects `nowait` mappings, and refactoring mappings gain an icon.

Install v3.16.0 with a Neovim plugin manager; requires Neovim 0.9.4 or newer.

Improved: Look up built-in operators, motions, text objects a…Behavior changed / inferred: Discover available keybindings as you type in Neovi…Improved: Identify keybindings with configurable icons and co…

Seeded by @iluxav with Codex

Read the evidence
v3.15.0

Open keybinding help with the WhichKey command before deferred setup has completed.

Details

`:WhichKey` loads configuration before opening the popup. Icon rules now cover Snacks and profiler mappings.

Install v3.15.0 with a Neovim plugin manager; requires Neovim 0.9.4 or newer.

Now works / inferred: Discover available keybindings as you type in Neovi…Improved / inferred: Identify keybindings with configurable icons and co…

Seeded by @iluxav with Codex

Read the evidence
v3.14.1
with v3.14.0

See visual-line selections redraw correctly while using WhichKey.

Details

Popup input redraws were corrected for stable and nightly Neovim. Macro trigger checks wait during macro execution, and Grapple mappings gain an icon.

Install v3.14.1 with a Neovim plugin manager; requires Neovim 0.9.4 or newer.

Now works: Discover available keybindings as you type in Neovi…Now works: Discover available keybindings as you type in Neovi…Improved: Identify keybindings with configurable icons and co…

Seeded by @iluxav with Codex

Read the evidence
v3.13.3

Record and execute macros without WhichKey attaching triggers during the macro.

Details

Terminal mode is no longer in the default automatic triggers. Popup help now shows configured scroll keys.

Install v3.13.3 with a Neovim plugin manager; requires Neovim 0.9.4 or newer.

Behavior changed: Discover available keybindings as you type in Neovi…Now works: Discover available keybindings as you type in Neovi…Now works: Customize the popup layout, sorting, key labels and…

Seeded by @iluxav with Codex

Read the evidence
v3.13.2
with v3.13.0, v3.13.1

Read the remaining key sequence correctly in expanded mapping groups.

Details

Expanded items now display the keys remaining after their parent prefix; mode tracking also handles missing `ModeChanged` events.

Install v3.13.2 with a Neovim plugin manager; requires Neovim 0.9.4 or newer.

Now works / inferred: Organize keybindings into named groups and generate…Now works / inferred: Discover available keybindings as you type in Neovi…

Seeded by @iluxav with Codex

Read the evidence
v3.12.1
Starting point

Discover available Neovim keybindings in a popup as you type.

Details

This baseline summarizes existing keybinding help, configurable popups, built-in suggestions and persistent menus. Configure mappings with `opts.spec` or `require('which-key').add()`.

Install v3.12.1 with a Neovim plugin manager; requires Neovim 0.9.4 or newer.

Added: Discover available keybindings as you type in Neovi…Added: Customize the popup layout, sorting, key labels and…Added: Organize keybindings into named groups and generate…Added: Identify keybindings with configurable icons and co…Added: Look up built-in operators, motions, text objects a…Added: Browse local and global marks before choosing a jum…Added: Inspect registers while choosing text to insert or…Added: Choose spelling suggestions in a popup.Added: Repeat commands while keeping their keybinding popu…

Seeded by @iluxav with Codex

Read the evidence