2024-06-18 22:17:53 +01:00
|
|
|
|
---
|
|
|
|
|
slug: /
|
|
|
|
|
sidebar_position: 1
|
|
|
|
|
---
|
2024-06-18 22:40:42 +01:00
|
|
|
|
# 🚀 Getting Started
|
2024-06-18 22:17:53 +01:00
|
|
|
|
|
|
|
|
|
**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**:
|
|
|
|
|
|
|
|
|
|
<!-- bootstrap:start -->
|
|
|
|
|
|
|
|
|
|
```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)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
<!-- bootstrap:end -->
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|