Vim
the foundation
modal editing
Neovim
the platform
Lua, LSP, Treesitter
LazyVim
the distro
curated & ready to go

Neovim (vanilla / DIY)

Just the editor — you write init.lua from scratch

A blank canvas. Neovim ships with a native LSP client, Treesitter, and a Lua API, but none of it is wired up. You choose every plugin, every keymap, every default. Total control, but hours (or weeks) of config work before it feels like an IDE.

LazyVim

A Neovim distribution — by folke, built on lazy.nvim

A pre-configured, opinionated Neovim setup: LSP, completion, formatting, linting, Treesitter, a file explorer, fuzzy finder, statusline, and sane keymaps all wired together out of the box. You extend it with small plugin-spec files instead of building the whole stack yourself.

Important: LazyVim is not a fork or a competitor to Neovim — it is Neovim, just pre-configured. It's a starting init.lua plus a plugin/config structure built on the lazy.nvim plugin manager. You can always eject and go back to a bare config.

⚖ Feature Comparison

Feature Neovim (vanilla) LazyVim Notes
Setup time Hours–weeks (DIY) minutes git clone the starter, open nvim, plugins install automatically.
Plugin manager None by default lazy.nvim LazyVim is built directly on top of lazy.nvim — lockfile, lazy-loading, UI included.
LSP configuration built-in client, manual setup pre-wired + Mason LazyVim auto-installs language servers via mason.nvim and configures them per-language.
Autocompletion none (plugin required) included (nvim-cmp/blink.cmp) Snippets, LSP completion, and command-line completion all pre-configured.
Treesitter built-in, no parsers auto-installed parsers LazyVim installs and updates parsers for languages you use automatically.
File explorer netrw only neo-tree Modern sidebar tree with git status, preview, and fuzzy filtering.
Fuzzy finder none Telescope / fzf-lua Find files, grep, buffers, symbols — all pre-bound to <leader> keymaps.
Statusline / UI Plain default lualine, bufferline, dashboard Polished UI out of the box: icons, tabs, breadcrumbs, start screen.
Keymap discoverability None built-in which-key Press <leader> and a popup shows every available keymap, grouped and labeled.
Formatting / linting manual conform.nvim + nvim-lint Format-on-save and linters pre-mapped per filetype, auto-installed via Mason.
Config structure One init.lua (your choice) opinionated modules LazyVim splits config into lua/plugins/*.lua spec files — easy to add, override, or disable.
Language extras N/A :LazyExtras One-command toggles for language packs (Python, Rust, Go, TypeScript, etc.) with full LSP+DAP+lint stacks.
Health checks :checkhealth (core only) :checkhealth + LazyVim checks LazyVim adds its own health checks covering the whole preconfigured stack.
Updating Manual, per-plugin :Lazy update Single command updates all plugins with a lockfile diff and changelog view.
Customization ceiling unlimited unlimited (it's still Neovim) Every LazyVim default can be overridden or removed — nothing is locked in.
Learning curve Steep (build everything) Gentle (learn on top of good defaults) LazyVim teaches good keymap conventions as you use it, via which-key hints.
Opinionatedness None — a blank slate High — sane defaults chosen for you A trade-off: less bikeshedding, but you inherit someone else's choices.

⚡ Why People Move to LazyVim

Zero to IDE in Minutes

Cloning the LazyVim starter and opening nvim gives you LSP, completion, formatting, git signs, fuzzy finding, and a file tree immediately — the setup that normally takes a DIY config days or weeks to reach.

Curated, Not Random

Instead of picking one plugin out of ten competing options for every feature, LazyVim has already made (and tested) that choice. You get a coherent, working stack rather than a pile of plugins that may or may not play nicely together.

Discoverable Keymaps

which-key surfaces every keybinding contextually as you type <leader>, so you learn the config by using it instead of memorizing a cheatsheet or reading someone else's init.lua.

Language Packs on Demand

:LazyExtras opens a picker of language/tooling bundles (Python, Rust, Go, Docker, Markdown, …). Toggle one on and LazyVim installs the LSP server, formatter, linter, and Treesitter parser together.

Still Just Neovim

LazyVim isn't a black box — it's readable Lua you can inspect, override, or delete. Every default lives in a plugin spec you can find and change. Nothing about it locks you out of raw Neovim.

Active Maintenance

Plugin compatibility, breaking changes, and new Neovim features get absorbed by the LazyVim maintainers and community, instead of landing on you to track down and fix individually.

⚖ The Trade-offs

Keep Vanilla Neovim If…
  • You want to understand every line of your config
  • You enjoy the process of building your own setup
  • You need a truly minimal footprint (e.g. on remote servers)
  • You already have a config you're happy with
Switch to LazyVim If…
  • You want IDE features working on day one
  • You'd rather write code than maintain a config
  • You're new to Neovim and want good defaults to learn from
  • You want a maintained, community-tested plugin stack
Watch out: Because LazyVim makes opinionated choices, you'll spend some time reading its docs to learn why something is bound the way it is before you override it. That's a small cost compared to building the same stack yourself.

🔄 Getting Started with LazyVim

Prerequisite: Neovim 0.9+ (LazyVim tracks recent Neovim releases closely — check lazyvim.org for the current minimum version).
Step 1 — Back Up Existing Config

Move any current Neovim config aside so LazyVim starts clean:

mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak
mv ~/.local/state/nvim ~/.local/state/nvim.bak
mv ~/.cache/nvim ~/.cache/nvim.bak
Step 2 — Clone the Starter

Clone the official starter template and remove its git history so it's yours:

git clone https://github.com/LazyVim/starter \
  ~/.config/nvim
rm -rf ~/.config/nvim/.git
Step 3 — Launch Neovim

Open nvim. lazy.nvim bootstraps itself and installs every plugin automatically:

nvim

Wait for installation to finish, then restart.

Step 4 — Explore & Extend

Add language support and inspect your setup:

:LazyExtras   " toggle language packs
:Lazy         " manage plugins
:checkhealth  " verify the install
:LazyVim      " changelog & docs

Add custom plugins in lua/plugins/*.lua — each file returns a lazy.nvim plugin spec.

⚖ The Full Flow, Summarized

Stage What it gives you Best for
Vim Modal editing muscle memory — motions, operators, registers Learning the core skill that transfers everywhere
Neovim Lua scripting, built-in LSP/Treesitter, an extensible platform Building exactly the editor you want, piece by piece
LazyVim All of the above, pre-assembled into a working IDE Getting productive fast without losing the ability to customize
Bottom line: Learn Vim motions first — they're the transferable skill. Learn what Neovim adds so you understand what's happening under the hood. Then, unless you specifically enjoy building editor config from scratch, let LazyVim assemble the stack for you and spend your time writing code instead.