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.

Video

Further reading and video