Site Tools


wiki:neovim-plugins

Neovim Plugins

Neovim plugins extend the editor with new features: syntax highlighting, fuzzy search, git integration, language servers, autocomplete. The plugin ecosystem is large and powerful.

Plugin managers

A plugin manager downloads and manages plugins. Popular managers:

  • lazy.nvim — modern, lazy-loading (popular in 2024+)
  • packer.nvim — compile-based, fast
  • vim-plug — simple, light
  • dein.vim — heavy but comprehensive

Most new setups use lazy.nvim.

Install lazy.nvim

git clone --filter=blob:none --sparse https://github.com/folke/lazy.nvim.git ~/.local/share/nvim/lazy/lazy.nvim

Then in init.lua:

local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({"git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", lazypath})
end
vim.opt.rtp:prepend(lazypath)
 
require("lazy").setup("plugins")

Create ~/.config/nvim/lua/plugins/init.lua with plugin specs.

Example plugins

-- ~/.config/nvim/lua/plugins/init.lua
return {
  -- Syntax highlighting
  {
    "nvim-treesitter/nvim-treesitter",
    run = ":TSUpdate",
  },
 
  -- Fuzzy finder
  {
    "nvim-telescope/telescope.nvim",
    dependencies = { "nvim-lua/plenary.nvim" },
  },
 
  -- LSP framework
  {
    "neovim/nvim-lspconfig",
    dependencies = { "williamboman/mason.nvim" },
  },
 
  -- Autocomplete
  {
    "hrsh7th/nvim-cmp",
    dependencies = { "hrsh7th/cmp-nvim-lsp" },
  },
 
  -- Git signs
  {
    "lewis6991/gitsigns.nvim",
  },
 
  -- Colorscheme
  {
    "folke/tokyonight.nvim",
  },
}
  • nvim-treesitter — semantic syntax highlighting based on AST
  • telescope — fuzzy search for files, buffers, grep
  • lspconfig — language server setup
  • nvim-cmp — autocomplete engine
  • gitsigns — git diff marks in gutter
  • nvim-tree or oil.nvim — file browser
  • lualine — status line
  • which-key — keybinding hints

Installing and updating

After adding plugin specs, run :Lazy sync (with lazy.nvim). This downloads, installs, and cleans up.

:Lazy update — update all plugins. :Lazy clean — remove unused plugins. :Lazy log — view recent changes.

Plugin configuration

Most plugins need setup. Example for lspconfig:

require("lspconfig").pyright.setup({})  -- Python language server

For complex setup (many plugins), organize into files:

~/.config/nvim/
├── init.lua
├── lua/
│   ├── plugins/
│   │   ├── init.lua        -- list of plugins
│   │   ├── lsp.lua         -- lsp setup
│   │   └── telescope.lua   -- telescope config
│   └── config.lua

Then require in init.lua:

require("config")
require("plugins.lsp")
require("plugins.telescope")

Finding plugins

Search at nvim.dev, GitHub, or ask in Neovim communities. Read plugin READMEs for setup instructions.

Moderation: avoid plugin bloat. Start with essentials (LSP, fuzzy find, syntax), add as needed.

wiki/neovim-plugins.md · Last modified: by 127.0.0.1