mirror of https://github.com/folke/lazy.nvim.git
85 lines
2.9 KiB
Markdown
85 lines
2.9 KiB
Markdown
---
|
||
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**:
|
||
|
||
<!-- 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.
|
||
|