The modern standard for Neovim plugins
lazy.nvim (folke/lazy.nvim) is the de-facto plugin manager for Neovim in 2026. It supports lazy-loading (load plugins on events / commands / filetypes), automatic install on startup, lockfile-based reproducibility, and a clean interactive UI for status and profiling.
Bootstrap — the standard snippet
The bootstrap goes at the top of your init.lua. It checks if lazy.nvim is installed; if not, it git-clones it. Then require("lazy").setup(plugins) takes over and installs everything else.
Plugin specs
Each plugin is a Lua table with a string (the GitHub user/repo) and optional fields:
dependencies— other plugins this needs.config— function to call after the plugin loads (usuallyrequire("plugin").setup({...})).opts— shorthand for the common case where the config is justrequire("plugin").setup(opts).event— load on a specific event (BufReadPost,InsertEnter,VeryLazy).cmd— load when a command is first used.ft— load only for specific filetypes.keys— load when a key is first pressed.build— shell command after install (e.g.:TSUpdatefor treesitter).
The starter plugin set
Six plugins cover ~80% of what most people install:
- nvim-treesitter — accurate AST-based syntax highlighting, structural text objects.
- telescope.nvim — fuzzy finder for files, grep, buffers, LSP symbols, everything.
- nvim-lualine — pretty status line.
- which-key.nvim — popup menu for your leader keymap as you type.
- nvim-autopairs — autoclose brackets and quotes.
- nvim-surround —
ys/ds/csoperations on surrounding pairs.
Live in
:Lazy. The lazy.nvim UI shows load times for every plugin, lets you update / clean / sync, and highlights breakage. Run :Lazy profile after install — you'll see exactly which plugins cost startup time.