The Vi Family: 50 Years of Terminal Text Editors

Polls consistently show vi-family editors are the most popular among Linux users. The original vi, released in 1977, is a terminal-based editor with a steep learning curve that rewards you with ruthless editing efficiency. Once learned, its modal editing is available everywhere — VS Code, IntelliJ IDEA, XCode, and most IDEs offer vi key bindings.

But vi's history is complex. The 1979 vi 2.0 release was proprietary UNIX® software, unavailable without an AT&T license. This drove developers in the 80s and 90s to create free clones. Today, there are dozens of vi clones and derivatives. Here's the most comprehensive list I could find, with release dates and key features.

Original ex/vi (1977–2017?)

  • Repo: heirloom-ex-vi
  • Based on 2.11BSD vi, upgraded with UTF-8 support and POSIX compliance fixes. No major quality-of-life improvements. Falls over on very large files.

STevie (1987–1989)

  • Repo: STevie
  • Clone for Atari ST and Amiga. Vim descends from STevie. If you don't have an ST or Amiga, skip this.

Elvis (1990–2024?)

  • Repo: elvis
  • Early clone for MS-DOS, Minix, and early 90s systems. Added multiple edit buffers, windows, and syntax coloring. Used a file buffer to handle files larger than memory. Used for the 80386 BSD port.

xvi (1992–2017?)

  • Repo: xvi
  • STevie derivative with multiple windows and buffers. Probably the smallest vi clone.

Vile (1991–)

  • Repo: vile
  • Derived from Microemacs, given vi-style editing with more modes. Adds infinite undo, UTF-8, syntax highlighting.

Vim (1991–)

  • Repo: vim
  • Probably the most used vi clone. Derived from STevie. Adds windows, multiple buffers, scripting, UTF-8. Handles GB-sized files. Now incorporates LLM-generated code.

nvi (1994–)

  • Repo: nvi
  • Based on Elvis, intended to be identical to original vi. Used for 4BSD Unix. Adds Perl/Tcl scripting, database-backed file storage. Opens ~1 GB files but complains about DB page sizes. No UTF-8 support.

OpenBSD vi / OpenVi (1994–)

  • Repo: OpenVi
  • nvi derivative, cleaned up. Still no UTF-8, macros, scripting, or syntax highlighting.

BusyBox vi (2001–)

  • Repo: busybox
  • Tiny, incomplete but usable vi implementation. Found in Alpine Linux and embedded systems.

IllumOS vi (2005–)

  • Repo: illumos-gate
  • AT&T UNIX® vi from SVR4, open-sourced as part of OpenSolaris in 2005.

nvi2 (2011–)

  • Repo: nvi2
  • Adds UTF-8 support to nvi, plus various CJK encodings.

neovim (2014–)

  • Repo: neovim
  • Cleans up Vim, removes ancient platform support. Adds LSP, built-in terminal, Lua scripting. Now incorporates LLM-generated code.

EVi (2026–)

  • Repo: evi
  • Fork of Vim from before LLM-generated code was added.

Vim Classic (2026–)

  • Repo: vim-classic
  • Fork of Vim 8.3 (pre-LLM), aiming for long-term human support.

ToyBox vi (2027?)

  • Repo: toybox
  • Non-GPL BusyBox clone, may get its own tiny vi implementation.

Not Quite vi

  • Viper (1995–): vi key bindings for Emacs. GNU Viper
  • Kakoune (2012–): modal editor inspired by vi, different key bindings, minimal, calls external programs. kakoune
  • Evil (2013–): another vi modal editing layer for Emacs. emacs-evil
  • vis (2015–): like vi but with structural regular expressions from sam. vis
  • Helix (2021–): modal editor inspired by Kakoune and Vim, different key bindings. helix

Why This Matters Now

The vi ecosystem is in flux. Vim and neovim have started incorporating LLM-generated code, which has split the community. Forks like EVi and Vim Classic aim to preserve a purely human-crafted editor. If you value stability and human-reviewed code, consider those. If you want the latest features, stick with neovim. The modal editing paradigm isn't going anywhere — it's been 50 years and still going strong.

Next Steps

  • Try a new vi clone you haven't used before. If you're on Vim, give neovim a shot for its LSP and Lua scripting.
  • If you're worried about LLM-generated code, check out EVi or Vim Classic.
  • For embedded systems, BusyBox vi is your friend.
  • If you're an Emacs user, Evil or Viper can give you the best of both worlds.