Skip to content
Go back

LazyVim vs LunarVim vs AstroNvim: Distros

By SumGuy 11 min read
LazyVim vs LunarVim vs AstroNvim: Distros

You Opened Neovim. Now What.

You’ve decided vanilla Vim is for people who enjoy suffering, and bare Neovim config from scratch is a four-week side project you don’t have time for. So you googled “Neovim starter config” and now you’re drowning in Reddit threads, GitHub stars, and three different Discord servers arguing about which distro is the One True Way.

Here’s the thing: all three of the big ones — LazyVim, LunarVim, and AstroNvim — are genuinely good. The question is which one fits your brain and your workflow, because picking the wrong one is how you end up spending Saturday night reading plugin source code instead of actually coding.

Let’s break them down honestly.


What Even Is a Neovim Distro?

A “distro” in Neovim terms is a curated, opinionated Lua configuration that ships with a plugin manager, LSP support, completion, file tree, fuzzy finder, and a bunch of keybindings already wired up. You install it, open Neovim, and it mostly just works.

The three biggest ones as of mid-2026:

All three ship with:

The differences are in philosophy, extensibility, and how much they stay out of your way.


LazyVim — The “It Just Works” Answer

LazyVim is what happens when the guy who wrote the best plugin manager (lazy.nvim) decides to build a config on top of it. It’s opinionated but not tyrannical.

Install:

Terminal window
# Back up your existing config first
mv ~/.config/nvim ~/.config/nvim.bak
# Clone LazyVim starter
git clone https://github.com/LazyVim/starter ~/.config/nvim
rm -rf ~/.config/nvim/.git
# Launch and let it do its thing
nvim

First launch downloads and installs everything. Takes about 30 seconds on a decent connection.

What you get by default:

Extending it:

LazyVim has an “extras” system. Want Python LSP support? One line:

~/.config/nvim/lua/plugins/example.lua
-- Enable a LazyVim extra
return {
{ import = "lazyvim.plugins.extras.lang.python" },
}

That pulls in pyright, the Python Treesitter parser, debug adapter config, and test runner integration. Same pattern for Go, Rust, TypeScript, Docker, and about 40 other extras as of LazyVim 12.x.

Overriding defaults:

~/.config/nvim/lua/plugins/overrides.lua
return {
-- swap telescope for fzf-lua
{ "nvim-telescope/telescope.nvim", enabled = false },
{
"ibhagwan/fzf-lua",
opts = {
winopts = { height = 0.85, width = 0.90 },
},
},
}

LazyVim loads your ~/.config/nvim/lua/plugins/ files and merges them with the base config. You’re not fighting it; you’re layering on top.

Who it’s for: You want a solid config that’s close to community standard, you don’t want to design a plugin ecosystem from scratch, and you trust folke’s taste. Honestly? Most people.

Who it’s not for: You have very specific workflow opinions and want to rebuild from primitives. LazyVim’s defaults are strong enough that fighting them gets annoying fast.


LunarVim — The Battle-Hardened Veteran

LunarVim (lvim) is the oldest of the three mainstream distros. It had a rocky period when packer died and it migrated to lazy.nvim, but as of 2025 it’s stable and actively maintained. It takes a more “wrap everything in an abstraction” approach.

Install:

Terminal window
# LunarVim has its own installer script
bash <(curl -s https://raw.githubusercontent.com/LunarVim/LunarVim/release-1.4/utils/installer/install.sh)

That script installs lvim as its own binary separate from nvim. Your existing Neovim config stays untouched. That’s actually a nice property — you can run both side by side.

The config lives here:

Terminal window
~/.config/lvim/config.lua

LunarVim exposes a lvim global table for all configuration:

~/.config/lvim/config.lua
-- Basic LunarVim config
lvim.log.level = "warn"
lvim.format_on_save.enabled = true
lvim.colorscheme = "lunar"
-- LSP
lvim.lsp.installer.setup.ensure_installed = {
"lua_ls",
"rust_analyzer",
"gopls",
}
-- Extra plugins
lvim.plugins = {
{
"folke/trouble.nvim",
cmd = "TroubleToggle",
},
}

LunarVim abstracts a lot of the LSP and completion wiring behind its own layer. That means less boilerplate for you, but it also means when something breaks you have to figure out if it’s LunarVim’s wrapper or the underlying plugin.

What’s good about it:

What’s annoying:

Upgrading:

Terminal window
lvim update

Simple, but occasionally produces surprises.

Who it’s for: You want a batteries-included IDE experience and you’re willing to trust LunarVim’s abstraction layer. Also good if you want to keep your vanilla Neovim install separate.

Who it’s not for: Tinkerers who want to understand exactly what’s happening under the hood. The abstraction layer gets in the way once you’re past beginner level.


AstroNvim — The Community Modular One

AstroNvim leans hard into modularity. It ships with an “AstroCommunity” plugin collection and a pattern of “astrocommunity packs” that bundle language support the same way LazyVim’s extras work, but with a bigger community-contributed catalog.

Install:

Terminal window
mv ~/.config/nvim ~/.config/nvim.bak
git clone --depth 1 https://github.com/AstroNvim/template ~/.config/nvim
rm -rf ~/.config/nvim/.git
nvim

Starts from a template repo, similar to LazyVim. First launch installs everything.

Config structure:

~/.config/nvim/
lua/
plugins/
astrocommunity.lua ← community packs
user.lua ← your custom plugins
community.lua ← AstroCommunity imports
init.lua

Adding a language pack from AstroCommunity:

~/.config/nvim/lua/community.lua
return {
"AstroNvim/astrocommunity",
-- Python pack: LSP, debugger, linter, formatter
{ import = "astrocommunity.pack.python" },
-- Rust pack
{ import = "astrocommunity.pack.rust" },
-- Docker support
{ import = "astrocommunity.pack.docker" },
}

AstroCommunity has packs for 40+ languages and a solid collection of colorscheme packs, motion plugins, and workflow tools. The community contribution model means it often has niche language support before LazyVim’s extras do.

Overriding core behavior:

AstroNvim uses an “AstroCore” plugin for core settings:

~/.config/nvim/lua/plugins/user.lua
return {
{
"AstroNvim/astrocore",
opts = {
mappings = {
n = {
-- Remap buffer close
["<leader>bd"] = { "<cmd>bdelete<cr>", desc = "Close buffer" },
},
},
},
},
}

This is more explicit than LazyVim’s approach but also more predictable. You know exactly where keybindings live.

What’s good about it:

What’s annoying:

Startup benchmarks (approximate, mid-2025 hardware):

DistroCold start (no plugins cached)Warm start
LazyVim~80ms~35ms
LunarVim~110ms~55ms
AstroNvim~95ms~45ms

These numbers shift a lot based on your plugin count and LSP setup. Don’t pick a distro based on 20ms.


Head-to-Head: The Things That Actually Matter

Plugin Manager

All three use lazy.nvim now. LunarVim was the last holdout and completed its migration in 2024. This is a non-issue.

LSP / Mason

All three handle LSP through nvim-lspconfig + mason.nvim. The difference is how much they abstract the wiring:

Keybindings

All three use <Space> as leader by default. All three ship with which-key.nvim. The specific bindings differ enough that switching distros means relearning muscle memory for about a week.

LazyVim’s bindings feel the most “thought out” to me — they follow a clear noun/verb pattern. AstroNvim’s are clean too. LunarVim’s can feel inconsistent in spots.

Debugging (DAP)

All three support nvim-dap for debugging. AstroNvim includes it by default in many language packs. LazyVim’s extras include it per-language. LunarVim has it but configuration is a bit more manual.

If debugging in Neovim is important to you, AstroNvim or LazyVim with the relevant extra is the less painful path.

Community Size / Support

If you’re going to hit weird config issues at 11 PM (and you will), community size matters.


The Decision Tree

Pick LazyVim if:

Pick LunarVim if:

Pick AstroNvim if:


Quick Migration Note

If you’ve already got one of these installed and want to try another, don’t just delete ~/.config/nvim. Neovim caches a lot:

Terminal window
# Full clean slate
rm -rf ~/.config/nvim
rm -rf ~/.local/share/nvim
rm -rf ~/.local/state/nvim
rm -rf ~/.cache/nvim

For LunarVim specifically (separate binary):

Terminal window
# LunarVim uninstall
bash <(curl -s https://raw.githubusercontent.com/LunarVim/LunarVim/release-1.4/utils/installer/uninstall.sh)

The Bottom Line

Honestly, if you’re asking “which one should I start with?” the answer in 2026 is LazyVim. It has the most active ecosystem, the best documentation, and the lowest floor for getting productive. The extras system is genuinely well-designed.

If you already know your way around Neovim and want something with more visual chrome and a bigger community plugin catalog, AstroNvim is a serious competitor and not a step down.

LunarVim is fine — it’s just not the first recommendation anymore unless you have a specific reason (the separate binary thing is legitimately useful in some workflows).

The good news: all three are free, all three can be wiped and replaced in ten minutes, and all three will make you faster than using VS Code after you’ve put in the reps. Pick one and actually use it for a month before deciding it’s wrong for you. The grass is always greener in the other distro’s README.


Share this post on:

Send a Webmention

Written about this post on your own site? Send a webmention and it'll show up above once verified.


Next Post
Mini PCs With 2.5GbE: Picking the Right Box

Discussion

Powered by Garrul . Sign in with GitHub or Google, or post anonymously.

Related Posts