A Neovim utility for defining keymaps using concise, cascading Lua trees, supporting Lua functions and expression mappings.
nest.nvim is a Neovim plugin that provides a Lua-based utility for defining keymaps using cascading trees. It solves the problem of managing complex keybinding configurations by allowing developers to structure mappings in nested, readable lists where prefixes and options inherit from parent nodes. This approach makes it easier to organize, refactor, and maintain keymaps in Neovim.
Neovim users and plugin developers who want a more maintainable and modular way to define keybindings, especially those managing extensive custom configurations or building plugins with complex keymapping needs.
Developers choose nest.nvim for its concise, tree-based syntax that mirrors mental models of keymap organization, its support for binding Lua functions directly to keys, and its minimal codebase that integrates seamlessly into Lua-centric Neovim setups without bloat.
nest.nvim is a Neovim plugin that provides a pure Lua utility for defining keymaps in a modular, readable, and maintainable way. It allows developers to structure keybindings as nested trees, where prefixes and configuration options cascade down to child mappings, making complex keymap setups easier to organize and refactor.
expr) for dynamic behavior.silent, noremap) that cascade through the tree.nest.nvim emphasizes a declarative, tree-based approach to keymapping that aligns with how developers mentally organize shortcuts, promoting maintainability and clarity in Neovim configuration.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The tree-based structure groups related keymaps under shared prefixes, making complex setups readable and refactorable, as shown in the Quickstart Guide with nested tables for leader and mode-specific mappings.
Supports mapping keys directly to Lua functions, including expression mappings for dynamic behavior, enabling seamless integration with Neovim APIs like LSP without extra boilerplate.
Options such as mode, buffer, and silent/noremap cascade from parent nodes, reducing redundancy and ensuring consistency, as demonstrated by the ability to set defaults and override them locally.
Written in a single ~100-line Lua file with no dependencies, making it easy to integrate, audit, and maintain, aligning with the plugin's focus on simplicity.
Lacks built-in features for keymap discovery, conflict resolution, or visual editing, which are offered by more comprehensive plugins, potentially requiring manual debugging for complex trees.
Relies heavily on understanding Lua tables and Neovim's Lua API, which can be a barrier for users accustomed to Vimscript or simpler configuration methods, despite the concise syntax.
As a minimal plugin, it has fewer community extensions, tutorials, or integrations compared to established alternatives, which might limit adoption or troubleshooting resources.