vi

Published: (March 24, 2026 at 07:24 AM EDT)
3 min read
Source: Dev.to

Source: Dev.to

Popularity

2.7 million people have visited Stack Overflow to learn how to exit a text editor—one in every 20 000 visitors. During peak hours, about 80 people per hour find themselves trapped in a program they opened by accident.

Design Constraints

The most feared tool in computing is also the most elegant. Bill Joy, then a graduate student at Berkeley, wrote code over a 300‑baud modem on an ADM‑3A terminal. The screen redraws slower than he can think; every keystroke costs time, and every wasted character is a visible delay.

To cope with these constraints, Joy built an editor where nothing is wasted:

  • No menus.
  • No mouse.
  • No chrome.
  • Every key does something.

The Escape key sits where Tab sits today because on the ADM‑3A it was one finger away. hjkl navigates because the ADM‑3A printed arrows on those keys. : enters command mode because on that keyboard, colon required no Shift.

Vi was not designed for comfort; it was designed for a 300‑baud modem. The constraint produced the grammar that defines the editor.

Command Grammar

Vi is not just an editor; it is a language.

d3w   # delete three words
ciw   # change inner word
yy    # yank (copy) this line
p     # put (paste) it back

Every command composes of a verb, an optional count, and a noun. Learn 10 verbs and 10 nouns and you have 100 commands; learn 20 of each and you have 400.

No other editor works this way. Most editors map actions to fixed key combinations (e.g., Ctrl+C, Ctrl+V, Ctrl+Shift+K). Those bindings are memorised, not understood. Vi gives you a grammar and lets you write sentences you have never written before.

A three‑year‑old composes sentences from verbs and nouns without memorising every possible combination—that is how vi works. Linguists would likely approve.

Legacy and Influence

Vi is specified in POSIX and ships with every Unix system: every BSD server, every Linux distribution, and every macOS installation. It has been around since 1976—fifty years of production.

Bram Moolenaar took vi and built Vim in 1991. He maintained it for 32 years, coined the term “charityware,” and asked users to donate to orphans in Uganda instead of paying for the software. He died on 3 August 2023, aged 62. The editor he built runs on more machines than any other text editor in history.

  • Vim: ~380 000 lines of C.
  • VS Code: Electron, Chromium, Node.js, hundreds of megabytes.

Both edit text, but the constraints of 1976 produced an editing grammar that modern editors have not matched—not because they lack features, but because they lack a language.

Vi is a 50‑year‑old proof that designing for constraints produces tools that outlast the constraints themselves.

Read the full article on vivianvoss.net →

0 views
Back to Blog

Related posts

Read more »

Neovim 0.12.0

text NVIM v0.12.0 Build type: Release LuaJIT 2.1.1774638290 Release notes - Changeloghttps://github.com/neovim/neovim/commit/fc7e5cf6c93fef08effc183087a2c8cc9bf...