Neovim plugin add (lazy.nvim)
Use this workflow when adding a new plugin to config/nvim.
Workflow
- •Inspect the existing layout
- •Open
config/nvim/init.luato confirm the lazy.nvimspecimport list. - •Check
config/nvim/lua/plugins/for the naming pattern of plugin config files.
- •Read upstream docs
- •Read the plugin README and docs from its repo (and any
doc/*.txtif needed). - •Prefer the upstream “recommended” or “minimal working” configuration.
- •Create a plugin config module
- •Add a new file under
config/nvim/lua/plugins/<plugin-name>.lua. - •Return a lazy.nvim spec table (same style as other plugin files).
- •Keep the module self-contained; avoid global side effects.
- •Register the module in lazy.nvim
- •Add
{ import = 'plugins.<plugin-name>' }to thespeclist inconfig/nvim/init.lua. - •Keep the ordering consistent with existing imports unless the plugin suggests a dependency order.
- •Keymap collision check
- •Before adding keymaps, search existing mappings:
- •
rg -n "keymap|map\\(" config/nvim - •Also scan for
which-keyregistrations if present.
- •
- •If a recommended mapping conflicts, choose a nearby alternative under the same mnemonic prefix.
- •Use
descfor every mapping.
- •Configure defaults and options
- •Wire up plugin
setup()with upstream defaults plus any repo-specific conventions. - •Follow existing patterns (e.g., use
vim.keymap.set, local helper functions). - •Keep options and mappings minimal; avoid speculative tweaks.
- •Validation
- •Ensure the plugin file is required by lazy.nvim and no syntax errors are introduced.
- •If the change impacts keymaps, mention any new keys in the response.
Repo conventions
- •Neovim config root:
config/nvim/. - •lazy.nvim bootstrap and imports live in
config/nvim/init.lua. - •Plugin config modules live in
config/nvim/lua/plugins/and return a plugin spec. - •Keep edits ASCII-only unless the file already uses non-ASCII.
Notes on keymaps
- •Prefer
<leader>mappings and keep them consistent with existing prefixes. - •Avoid overriding single-letter normal mode bindings unless the repo already does so.
- •When in doubt, add a
which-keyentry matching the new mapping.