Vi โ Vim โ Neovim
Fifty years of an editing language
vi (1976) โ Vim (1991) โ Neovim (2014). Three editors, one keybinding language, surprisingly little drift.
The lineage is short, surprisingly stable, and worth knowing. Three editors over fifty years. The keybindings you learn today are mostly the keybindings someone learned in 1976.
| Year | Editor | Creator | Key contribution |
|---|---|---|---|
| 1969 | ed | Ken Thompson | The original Unix line editor โ Vim's :Ex commands are direct descendants. |
| 1976 | vi | Bill Joy (UC Berkeley) | Visual interface to ex. Modal editing on the ADM-3A terminal. |
| 1991 | Vim | Bram Moolenaar | Vi IMproved: visual mode, multi-level undo, scripting, plugins, syntax highlighting. |
| 2014 | Neovim | Community fork | Async jobs, Lua scripting, built-in LSP, modern defaults, embeddable as a library. |
vi (1976)
Bill Joy wrote vi as the visual mode of ex, an extended version of ed. The terminal was the ADM-3A โ no arrow keys, no escape key in the modern position, no separate display memory for a status line. Joy designed around those constraints. hjkl for cursor movement was on the keyboard physically. The status line at the bottom was the only place you could put feedback without scrolling the buffer. Modal editing existed because the terminal was a teletype โ keys had to mean something even when you weren't typing prose into a buffer.
Almost every design decision in modern Vim makes sense if you remember it was first made for a 1976 terminal.
Vim (1991)
Bram Moolenaar wrote Vim โ Vi IMproved โ to add the things vi was missing: visual mode for selecting before acting, multi-level undo, syntax highlighting, a real scripting language (Vimscript), and a plugin ecosystem. Bram maintained Vim almost single-handedly for 32 years until his passing in 2023. Vim is still actively maintained by a small team.
Vim is still the default vi on macOS, BSD, and many Linux distributions. When you type vi at a terminal and get something that supports u and Ctrl-R, you have Vim. Pure 1976 vi has not shipped on a normal Unix install in decades.
Neovim (2014)
Neovim started in 2014 as a refactor: split the editor core from the UI so multiple front-ends could exist; add an async event loop so plugins could call out to LSP servers and language tools without freezing the editor; replace Vimscript-only configuration with first-class Lua. It also took the chance to flip a few defaults that had been frozen for backward compatibility โ better terminal mouse handling, sane 'incsearch', hybrid line numbers, fixing the Y = yy historical wart, etc.
Neovim is now the de facto front of the Vim world for new users. The keybindings are essentially identical to Vim's; the configuration ecosystem has moved.
See also: Modal Editing, You Don't Need Vim