which-key.nvim is a Neovim plugin that displays available keybindings in a popup menu as you type, helping users remember their custom key mappings.
The plugin solves the problem of keymap discovery and recall in Neovim by showing a visual popup that lists all available keybindings matching what you've typed so far. It works across multiple modes including normal, insert, visual, operator pending, terminal, and command mode, with each mode independently configurable. The tool automatically extracts keymap descriptions from the desc attribute of keymaps, requiring minimal additional configuration for most use cases. Users can also define custom mapping specifications to add group descriptions and virtual mappings that don't correspond to actual keybindings.
The plugin suits developers who maintain extensive custom keybinding configurations and want to reduce cognitive load when recalling less-frequently-used commands. It works well for anyone building a personalized Neovim setup with many leader-key bindings or mode-specific shortcuts. The tool offers three layout presets—classic, modern, and helix—plus full customization of window appearance and behavior. It includes built-in plugins for marks, registers, presets, and spelling suggestions, and provides help for operators, motions, and text objects. A hydra mode feature keeps the popup open until escape is pressed, allowing rapid sequential command execution. Icon support integrates with mini.icons and nvim-web-devicons for visual enhancement.
The project maintains active development with regular updates addressing user-reported issues and feature requests. The codebase shows responsiveness to configuration edge cases and mode-specific behavior refinements. Documentation includes a health check command for troubleshooting, indicating attention to user onboarding and problem diagnosis. The plugin demonstrates ongoing refinement of sorting options, layout customization, and integration with the broader Neovim plugin ecosystem.