Convert Figma logo to code with AI

LazyVim logoLazyVim

Neovim config for the lazy

16,437
1,150
16,437
82

Top Related Projects

13,952

💤 A modern plugin manager for Neovim

18,030

🌙 LunarVim is an IDE layer for Neovim. Completely free and community driven.

24,257

Blazing fast Neovim config providing solid defaults and a beautiful UI, enhancing your neovim experience.

12,504

AstroNvim is an aesthetic and feature-rich neovim config that is extensible and easy to use with a great set of plugins

A launch point for your personal nvim configuration

20,224

A modular Vim/Neovim configuration

Quick Overview

LazyVim is a Neovim configuration framework that aims to provide a fast, feature-rich, and easily extensible setup for Neovim users. It leverages the lazy.nvim plugin manager and offers a curated set of plugins and configurations out of the box, while still allowing for easy customization.

Pros

  • Easy to install and set up, with sensible defaults
  • Highly customizable and extensible
  • Fast startup time due to lazy loading of plugins
  • Active community and regular updates

Cons

  • May be overwhelming for Neovim beginners due to its extensive features
  • Some users might find the default keybindings unfamiliar
  • Requires some time to learn and fully utilize all features
  • Occasional breaking changes during updates

Code Examples

  1. Adding a custom plugin:
-- In your config file (e.g., ~/.config/nvim/lua/plugins/custom.lua)
return {
  "github_username/plugin_name",
  config = function()
    -- Plugin configuration
  end,
}
  1. Customizing a built-in option:
-- In ~/.config/nvim/lua/config/options.lua
vim.opt.relativenumber = true
  1. Adding a custom keybinding:
-- In ~/.config/nvim/lua/config/keymaps.lua
vim.keymap.set("n", "<leader>cc", ":lua vim.lsp.buf.code_action()<CR>", { desc = "Code Action" })

Getting Started

  1. Ensure you have Neovim 0.8.0+ installed
  2. Back up your existing Neovim configuration
  3. Clone the LazyVim repository:
    git clone https://github.com/LazyVim/LazyVim.git ~/.config/nvim
    
  4. Start Neovim:
    nvim
    
  5. LazyVim will automatically install plugins and set up the configuration
  6. Customize your setup by editing files in ~/.config/nvim/lua/

Competitor Comparisons

13,952

💤 A modern plugin manager for Neovim

Pros of lazy.nvim

  • More flexible and customizable plugin management system
  • Faster startup times due to lazy loading capabilities
  • Can be used independently of any specific Neovim configuration

Cons of lazy.nvim

  • Requires more manual configuration and setup
  • Steeper learning curve for beginners
  • Less opinionated, which may lead to inconsistent setups across users

Code Comparison

lazy.nvim:

require("lazy").setup({
  "folke/which-key.nvim",
  { "folke/neoconf.nvim", cmd = "Neoconf" },
  "folke/neodev.nvim",
})

LazyVim:

{
  "folke/which-key.nvim",
  "folke/neoconf.nvim",
  "folke/neodev.nvim",
}

Summary

lazy.nvim is a powerful plugin manager that offers more flexibility and control over Neovim configurations. It's ideal for users who want to build their setup from scratch or have specific requirements. LazyVim, on the other hand, is a pre-configured Neovim setup that uses lazy.nvim as its plugin manager. It provides a more opinionated and ready-to-use configuration, making it easier for beginners to get started with a fully-featured Neovim environment.

18,030

🌙 LunarVim is an IDE layer for Neovim. Completely free and community driven.

Pros of LunarVim

  • More comprehensive out-of-the-box configuration
  • Includes a wider range of pre-configured plugins
  • Offers a guided installation process for easier setup

Cons of LunarVim

  • Heavier and potentially slower startup time
  • Less flexible for customization due to its opinionated nature
  • Steeper learning curve for users who want to modify the default setup

Code Comparison

LunarVim configuration example:

lvim.colorscheme = "lunar"
lvim.format_on_save = true
lvim.leader = "space"

LazyVim configuration example:

return {
  colorscheme = "tokyonight",
  options = {
    opt = {
      relativenumber = true,
      number = true,
      spell = false,
      signcolumn = "auto",
      wrap = false,
    },
  },
}

Both LunarVim and LazyVim aim to provide pre-configured Neovim setups, but they differ in their approach. LunarVim offers a more comprehensive out-of-the-box experience with a wider range of pre-configured plugins, making it suitable for users who want a ready-to-use setup. However, this comes at the cost of potentially slower startup times and less flexibility for customization.

LazyVim, on the other hand, provides a more lightweight and modular approach, allowing for easier customization and faster startup times. It may require more initial setup but offers greater flexibility for users who want to tailor their Neovim experience.

24,257

Blazing fast Neovim config providing solid defaults and a beautiful UI, enhancing your neovim experience.

Pros of NvChad

  • Faster startup time and overall performance
  • More visually appealing default UI and color schemes
  • Easier initial setup for beginners

Cons of NvChad

  • Less flexible and customizable compared to LazyVim
  • Smaller community and fewer available plugins
  • Limited documentation for advanced configurations

Code Comparison

NvChad configuration example:

local custom_init = function()
  vim.opt.relativenumber = true
  vim.opt.number = true
  vim.opt.spell = true
  vim.opt.signcolumn = "auto"
end

LazyVim configuration example:

return {
  {
    "LazyVim/LazyVim",
    opts = {
      colorscheme = "catppuccin",
      news = {
        lazyvim = true,
        neovim = true,
      },
    },
  },
}

NvChad focuses on providing a pre-configured setup with minimal user intervention, while LazyVim offers a more modular approach, allowing users to easily add or remove features. NvChad's configuration tends to be more centralized, whereas LazyVim encourages distributed configuration files for better organization.

12,504

AstroNvim is an aesthetic and feature-rich neovim config that is extensible and easy to use with a great set of plugins

Pros of AstroNvim

  • More extensive default plugin set, providing a fuller out-of-the-box experience
  • Includes a user-friendly UI for managing plugins and configurations
  • Offers a wider range of pre-configured language support

Cons of AstroNvim

  • Larger initial setup and longer startup time due to more bundled plugins
  • Less flexible for users who prefer a minimal base to build upon
  • Steeper learning curve for those new to Neovim due to more complex default setup

Code Comparison

AstroNvim configuration example:

return {
  colorscheme = "astrodark",
  plugins = {
    "AstroNvim/astrocommunity",
    { import = "astrocommunity.colorscheme.catppuccin" },
  },
}

LazyVim configuration example:

return {
  colorscheme = "tokyonight",
  plugins = {
    { "folke/tokyonight.nvim" },
    { "catppuccin/nvim", name = "catppuccin" },
  },
}

Both configurations are relatively simple, but AstroNvim's approach leverages its community plugins repository, while LazyVim's configuration is more direct in specifying individual plugins.

A launch point for your personal nvim configuration

Pros of kickstart.nvim

  • Lightweight and minimalistic, providing a basic starting point for customization
  • Easier to understand and modify for users who prefer a DIY approach
  • Faster startup time due to fewer default plugins and configurations

Cons of kickstart.nvim

  • Less feature-rich out of the box compared to LazyVim
  • Requires more manual configuration to achieve a fully-featured setup
  • May lack some advanced optimizations and integrations present in LazyVim

Code Comparison

kickstart.nvim:

-- Basic plugin setup
use {
  'nvim-telescope/telescope.nvim',
  requires = { {'nvim-lua/plenary.nvim'} }
}

LazyVim:

-- More comprehensive plugin setup with lazy loading
{
  'nvim-telescope/telescope.nvim',
  cmd = 'Telescope',
  version = false,
  lazy = true,
  dependencies = {
    'nvim-lua/plenary.nvim',
    'nvim-tree/nvim-web-devicons',
  },
}

The code comparison shows that LazyVim provides a more sophisticated plugin setup with lazy loading and additional dependencies, while kickstart.nvim offers a simpler, more straightforward configuration. This reflects the overall philosophy of each project, with LazyVim focusing on a more feature-rich, optimized experience, and kickstart.nvim prioritizing simplicity and customization.

20,224

A modular Vim/Neovim configuration

Pros of SpaceVim

  • More extensive built-in functionality and layers
  • Longer development history and larger community
  • Supports both Vim and Neovim out of the box

Cons of SpaceVim

  • Steeper learning curve due to complexity
  • Can be slower to start up and potentially more resource-intensive
  • Configuration can be more challenging for beginners

Code Comparison

SpaceVim configuration example:

let g:spacevim_enable_debug = 1
let g:spacevim_realtime_leader_guide = 1
call SpaceVim#layers#load('incsearch')
call SpaceVim#layers#load('lang#go')
call SpaceVim#layers#load('lang#markdown')

LazyVim configuration example:

return {
  { "folke/which-key.nvim", enabled = false },
  { "folke/neoconf.nvim", enabled = false },
  { "folke/neodev.nvim", enabled = false },
}

SpaceVim offers a more comprehensive out-of-the-box experience with numerous pre-configured layers, while LazyVim provides a leaner, more modular approach that's easier to customize. SpaceVim's configuration is typically done in Vimscript, whereas LazyVim uses Lua, which many users find more intuitive and powerful for complex setups.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README


Install · Configure · Docs

LazyVim is a Neovim setup powered by 💤 lazy.nvim to make it easy to customize and extend your config. Rather than having to choose between starting from scratch or using a pre-made distro, LazyVim offers the best of both worlds - the flexibility to tweak your config as needed, along with the convenience of a pre-configured setup.

image

image

✨ Features

  • 🔥 Transform your Neovim into a full-fledged IDE
  • 💤 Easily customize and extend your config with lazy.nvim
  • 🚀 Blazingly fast
  • 🧹 Sane default settings for options, autocmds, and keymaps
  • 📦 Comes with a wealth of plugins pre-configured and ready to use

⚡️ Requirements

  • Neovim >= 0.9.0 (needs to be built with LuaJIT)
  • Git >= 2.19.0 (for partial clones support)
  • a Nerd Font (optional)
  • a C compiler for nvim-treesitter. See here

🚀 Getting Started

You can find a starter template for LazyVim here

Try it with Docker
docker run -w /root -it --rm alpine:edge sh -uelic '
  apk add git lazygit neovim ripgrep alpine-sdk --update
  git clone https://github.com/LazyVim/starter ~/.config/nvim
  cd ~/.config/nvim
  nvim
'
Install the LazyVim Starter
  • Make a backup of your current Neovim files:

    mv ~/.config/nvim ~/.config/nvim.bak
    mv ~/.local/share/nvim ~/.local/share/nvim.bak
    
  • Clone the starter

    git clone https://github.com/LazyVim/starter ~/.config/nvim
    
  • Remove the .git folder, so you can add it to your own repo later

    rm -rf ~/.config/nvim/.git
    
  • Start Neovim!

    nvim
    

    Refer to the comments in the files on how to customize LazyVim.


There's a great video created by @elijahmanor with a walkthrough to get started.

Watch the video

@dusty-phillips is working on a book called LazyVim for Ambitious Developers available for free online.

📂 File Structure

The files under config will be automatically loaded at the appropriate time, so you don't need to require those files manually. LazyVim comes with a set of default config files that will be loaded before your own. See here

You can add your custom plugin specs under lua/plugins/. All files there will be automatically loaded by lazy.nvim

~/.config/nvim
├── lua
│   ├── config
│   │   ├── autocmds.lua
│   │   ├── keymaps.lua
│   │   ├── lazy.lua
│   │   └── options.lua
│   └── plugins
│       ├── spec1.lua
│       ├── **
│       └── spec2.lua
└── init.lua

⚙️ Configuration

Refer to the docs