Frequently Asked Question
What is the difference between vi, Vim, and Neovim?
vi is the original visual editor, written by Bill Joy at Berkeley in 1976 as a
screen-oriented mode for the older line editor ex. It was small, fast, and designed
for slow serial terminals. Every POSIX-compliant Unix is required to ship some
version of vi, which is why you can rely on finding it on any server, including
stripped-down BusyBox systems and minimal container images.
Vim ("Vi IMproved") is Bram Moolenaar's reimplementation, first released in 1991. It
adds syntax highlighting, multi-level undo, plugins, scripting via Vimscript, split
windows, visual mode, and a thousand other improvements, while remaining backwards
compatible with vi's key bindings. On most Linux distributions, both vi and vim
now point at Vim, sometimes at vim-tiny, a small build with fewer features.
Neovim is a 2014 fork of Vim that modernises the C codebase, embeds Lua as a first-class scripting language, adds built-in support for the Language Server Protocol and an asynchronous job control API, and has a more open governance model. Everything you learn about Vim's editing model applies to Neovim unchanged; the differences are mostly under the bonnet and in how you configure the editor.