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.luais 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()— nonvim-lspconfigplugin 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.
vim, the editing skills still apply 100%.