--- 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. On Windows, this is usually `~\AppData\Local\nvim`. To know the correct path for your system, run `:echo stdpath('config')`. ::: <Tabs> <TabItem value="multiple" label="Structured Setup"> ```lua title="~/.config/nvim/init.lua" require("config.lazy") ``` <!-- install_multi:start --> ```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" local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) if vim.v.shell_error ~= 0 then vim.api.nvim_echo({ { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, { out, "WarningMsg" }, { "\nPress any key to exit..." }, }, true, {}) vim.fn.getchar() os.exit(1) end end vim.opt.rtp:prepend(lazypath) -- Make sure to setup `mapleader` and `maplocalleader` before -- loading lazy.nvim so that mappings are correct. -- This is also a good place to setup other settings (vim.opt) vim.g.mapleader = " " vim.g.maplocalleader = "\\" -- Setup lazy.nvim require("lazy").setup({ -- highlight-start spec = { -- import your plugins { import = "plugins" }, }, -- highlight-end -- Configure any other settings here. See the documentation for more details. -- colorscheme that will be used when installing plugins. install = { colorscheme = { "habamax" } }, -- automatically check for plugin updates checker = { enabled = true }, }) ``` <!-- install_multi:end --> You can then create your plugin specs in `~/.config/nvim/lua/plugins/`. Each file should return a table with the plugins you want to install. For more info see [Structuring Your Plugins](/usage/structuring) <!-- prettier-ignore-start --> <pre> ~/.config/nvim ├── lua │ ├── config │ │ └── lazy.lua │ └── plugins │ ├── spec1.lua │ ├── ** │ └── spec2.lua └── init.lua </pre> <!-- prettier-ignore-end --> </TabItem> <TabItem value="single" label="Single File Setup"> <!-- install_single:start --> ```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" local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) if vim.v.shell_error ~= 0 then vim.api.nvim_echo({ { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, { out, "WarningMsg" }, { "\nPress any key to exit..." }, }, true, {}) vim.fn.getchar() os.exit(1) end end vim.opt.rtp:prepend(lazypath) -- Make sure to setup `mapleader` and `maplocalleader` before -- loading lazy.nvim so that mappings are correct. -- This is also a good place to setup other settings (vim.opt) vim.g.mapleader = " " vim.g.maplocalleader = "\\" -- Setup lazy.nvim require("lazy").setup({ -- highlight-start spec = { -- add your plugins here }, -- highlight-end -- Configure any other settings here. See the documentation for more details. -- colorscheme that will be used when installing plugins. install = { colorscheme = { "habamax" } }, -- automatically check for plugin updates checker = { enabled = true }, }) ``` <!-- install_single:end --> </TabItem> </Tabs>