Skip to content

/compare/vim/vim-vs-neovim

Vim vs Neovim: what differs and which to choose

The commands on this page have not been executed by our verification runner yet.updated 2026-10-20
tool
Vim / Neovim
compares
Vim vs Neovim

Neovim started in 2014 as a fork of Vim. It keeps Vim's modal editing and most of its commands, but adds Lua as a first-class configuration and plugin language, a built-in LSP client, Tree-sitter-based highlighting, an embedded terminal and more modern defaults. Vim focuses on stability and compatibility, and has its own new script language, Vim9 script. Choose Neovim for an IDE-like setup built from Lua plugins; choose Vim when you want what is installed on every server, or rely on Vim9 script.

Criterion by criterion

CriterionVimNeovim
Config file~/.vimrc (or ~/.vim/vimrc)~/.config/nvim/init.lua or init.vim
ScriptingVimscript and Vim9 scriptVimscript and Lua (no Vim9 script)
Language serversthrough plugins (vim-lsp, coc.nvim, yegappan/lsp)built-in client (vim.lsp)
Syntax highlightingregex-based syntax filessyntax files plus Tree-sitter
Defaultsvi-compatible unless a vimrc exists; defaults.vim adds somemodern defaults: hidden, incsearch, mouse, filetype on …
Installed by defaulton most Linux distributions and macOS (vi or vim)usually installed separately
GUIgVimexternal front ends (Neovide and others)

Moving a vimrc to Neovim

~/.config/nvim/init.lua
-- keep using an existing vimrc while you migrate
vim.cmd("source ~/.vimrc")
vim.opt.number = true
vim.keymap.set("n", "<leader>w", ":w<CR>")

Most Vimscript plugins work in both. Plugins written in Lua, and those built on vim.lsp or Tree-sitter, work only in Neovim; plugins written in Vim9 script work only in Vim.

Sources