--- sidebar_position: 2 --- # 🛠️ Installation import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; There are multiple ways to install **lazy.nvim**. The **Structured Setup** is the recommended way, but you can also use the **Single File Setup** if you prefer to keep everything in your `init.lua`. Please refer to the [Configuration](/configuration) section for an overview of all available options. :::tip It is recommended to run `:checkhealth lazy` after installation. ::: :::note In what follows `~/.config/nvim` is your Neovim configuration directory. To know the correct path for your system, run `:echo stdpath('config')`. ::: ```lua title="~/.config/nvim/init.lua" require("config.lazy") ``` ```lua title="~/.config/nvim/lua/config/lazy.lua" -- Bootstrap lazy.nvim local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" if not (vim.uv or vim.loop).fs_stat(lazypath) then local lazyrepo = "https://github.com/folke/lazy.nvim.git" vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) end vim.opt.rtp:prepend(lazypath) -- Make sure to setup `mapleader` before loading lazy.nvim -- This is also a good place to setup other settings (vim.opt) vim.g.mapleader = " " -- Make sure to set `mapleader` before lazy so your mappings are correct vim.g.maplocalleader = "\\" -- Same for `maplocalleader` -- Setup lazy.nvim require("lazy").setup({ -- highlight-start spec = { -- import your plugins { import = "plugins" }, }, -- highlight-end defaults = { -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default. lazy = false, -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, -- have outdated releases, which may break your Neovim install. version = false, -- always use the latest git commit -- version = "*", -- try installing the latest stable version for plugins that support semver }, -- colorscheme that will be used when installing plugins. install = { colorscheme = { "habamax" } }, checker = { enabled = true }, -- automatically check for plugin updates performance = { rtp = { -- uncomment the below to disable some rtp plugins disabled_plugins = { -- "gzip", -- "matchit", -- "matchparen", -- "netrwPlugin", -- "tarPlugin", -- "tohtml", -- "tutor", -- "zipPlugin", }, }, }, }) ``` You can then create your plugin specs in `lua/plugins`. Each file should return a table with the plugins you want to install. For more info see [Structuring Your Plugins](/usage/structuring)
~/.config/nvim
├── lua
│   ├── config
│   │   └── lazy.lua
│   └── plugins
│       ├── spec1.lua
│       ├── **
│       └── spec2.lua
└── init.lua
```lua title="~/.config/nvim/init.lua" -- Bootstrap lazy.nvim local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" if not (vim.uv or vim.loop).fs_stat(lazypath) then local lazyrepo = "https://github.com/folke/lazy.nvim.git" vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) end vim.opt.rtp:prepend(lazypath) -- Make sure to setup `mapleader` before loading lazy.nvim -- This is also a good place to setup other settings (vim.opt) vim.g.mapleader = " " -- Make sure to set `mapleader` before lazy so your mappings are correct vim.g.maplocalleader = "\\" -- Same for `maplocalleader` -- Setup lazy.nvim require("lazy").setup({ -- highlight-start spec = { -- add your plugins here }, -- highlight-end defaults = { -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default. lazy = false, -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, -- have outdated releases, which may break your Neovim install. version = false, -- always use the latest git commit -- version = "*", -- try installing the latest stable version for plugins that support semver }, -- colorscheme that will be used when installing plugins. install = { colorscheme = { "habamax" } }, checker = { enabled = true }, -- automatically check for plugin updates performance = { rtp = { -- uncomment the below to disable some rtp plugins disabled_plugins = { -- "gzip", -- "matchit", -- "matchparen", -- "netrwPlugin", -- "tarPlugin", -- "tohtml", -- "tutor", -- "zipPlugin", }, }, }, }) ```