--- slug: / sidebar_position: 1 --- # ๐Ÿš€ Getting Started **lazy.nvim** is a modern plugin manager for Neovim. ![image](https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png) ## โœจ Features - ๐Ÿ“ฆ Manage all your Neovim plugins with a powerful UI - ๐Ÿš€ Fast startup times thanks to automatic caching and bytecode compilation of Lua modules - ๐Ÿ’พ Partial clones instead of shallow clones - ๐Ÿ”Œ Automatic lazy-loading of Lua modules and lazy-loading on events, commands, filetypes, and key mappings - โณ Automatically install missing plugins before starting up Neovim, allowing you to start using it right away - ๐Ÿ’ช Async execution for improved performance - ๐Ÿ› ๏ธ No need to manually compile plugins - ๐Ÿงช Correct sequencing of dependencies - ๐Ÿ“ Configurable in multiple files - ๐Ÿ“š Generates helptags of the headings in `README.md` files for plugins that don't have vimdocs - ๐Ÿ’ป Dev options and patterns for using local plugins - ๐Ÿ“Š Profiling tools to optimize performance - ๐Ÿ”’ Lockfile `lazy-lock.json` to keep track of installed plugins - ๐Ÿ”Ž Automatically check for updates - ๐Ÿ“‹ Commit, branch, tag, version, and full [Semver](https://devhints.io/semver) support - ๐Ÿ“ˆ Statusline component to see the number of pending updates - ๐ŸŽจ Automatically lazy-loads colorschemes ## โšก๏ธ Requirements - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) - a [Nerd Font](https://www.nerdfonts.com/) **_(optional)_** ## ๐Ÿ“ฆ Installation You can add the following Lua code to your `init.lua` to bootstrap **lazy.nvim**: ```lua local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" if not (vim.uv or vim.loop).fs_stat(lazypath) then vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", -- latest stable release lazypath, }) end vim.opt.rtp:prepend(lazypath) ``` Next step is to add **lazy.nvim** below the code added in the prior step in `init.lua`: ```lua require("lazy").setup(plugins, opts) ``` - **plugins**: this should be a `table` or a `string` - `table`: a list with your [Plugin Spec](#-plugin-spec) - `string`: a Lua module name that contains your [Plugin Spec](#-plugin-spec). See [Structuring Your Plugins](#-structuring-your-plugins) - **opts**: see [Configuration](#%EF%B8%8F-configuration) **_(optional)_** ```lua -- Example using a list of specs with the default options vim.g.mapleader = " " -- Make sure to set `mapleader` before lazy so your mappings are correct vim.g.maplocalleader = "\\" -- Same for `maplocalleader` require("lazy").setup({ "folke/which-key.nvim", { "folke/neoconf.nvim", cmd = "Neoconf" }, "folke/neodev.nvim", }) ``` โ„น๏ธ It is recommended to run `:checkhealth lazy` after installation.