C.W.K.
Stream
Lesson 02 of 08 · published

Vim vs Neovim

~10 min · vim, neovim, tooling

Level 0Trapped
0 XP0/35 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

Same language, different runtime

Neovim is a 2014 fork of Vim aimed at modernizing the codebase, embedding Lua as a first-class config language, and shipping async architecture. Practically all the editing knowledge transfers — every motion, every operator, every text object you'll learn in this quest works identically in both. The differences live in the configuration story and the plugin ecosystem.

What's the same

Modal editing, motions, text objects, registers, marks, macros, the : command line, Vimscript itself — all identical. If you learn ciw in Vim, it works the same in Neovim. The shared muscle memory is the whole point.

What Neovim adds

  • Lua configuration — your init.lua is a real programming language with tables, closures, and a stdlib, instead of Vimscript's quirky DSL.
  • Built-in LSP client — code intelligence (rename, go to definition, hover docs) without a single plugin.
  • Built-in Treesitter — AST-based highlighting and structural text objects.
  • Async architecture — plugins run in the background without freezing the UI.
  • Modern defaults — sensible backspace, syntax on, filetype detection on, true colors recognized.

Current versions (2026 baseline)

Neovim 0.11 is the modern stable line. Vim 9.1+ is current upstream. Both are actively maintained; Neovim simply moves faster on the modern features (LSP, async, Lua) while Vim stays closer to its classic feel.

Neovim 0.11 highlights worth knowing

  • Native LSP setup with vim.lsp.config() + vim.lsp.enable() — no nvim-lspconfig plugin required for the basics.
  • Default LSP mappings: grn (rename), grr (references), gri (implementation), gra (code action). They Just Work as soon as you have a server attached.
  • Async treesitter highlighting — no UI hitches on big files.
  • Fuzzy completion via completeopt+=fuzzy.
Recommendation for this quest: install Neovim. Everything in Tracks 1–3 works in both, and Tracks 4+ lean on Neovim-specific features (Lua config, native LSP, lazy.nvim). If you're stuck on a server with only vim, the editing skills still apply 100%.

Code

Install Neovim and check the version·bash
# macOS
brew install neovim

# Ubuntu / Debian (use the unstable PPA for 0.11+, distro repos lag)
sudo add-apt-repository ppa:neovim-ppa/unstable
sudo apt update && sudo apt install neovim

# Arch / Manjaro
sudo pacman -S neovim

# Fedora
sudo dnf install neovim

# Verify
nvim --version | head -1   # should show NVIM v0.11.x or newer
vim --version | head -1    # if you also have classic Vim
Neovim 0.11 default LSP mappings — they're built in·vim
grn      " rename symbol under cursor
grr      " find references
gri      " go to implementation
gra      " code action
gO       " document symbols (outline)
[d  ]d   " previous / next diagnostic
Ctrl-W d " show diagnostic float
K        " hover documentation

External links

Exercise

Install Neovim 0.11+ on your machine. Run nvim --version and confirm it reports 0.11 or newer. Then run nvim +checkhealth and read the output — note any warnings about clipboard, providers, or compilers. Don't fix them yet; just notice what Neovim wants. We'll address them in the configuration track.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.