Frequently Asked Question

Why does every Linux server ship with vi?

Two reasons, one historical and one regulatory. Historically, vi was the standard editor of BSD Unix from 1979 onward, and AT&T's System V picked it up in the mid-1980s. Every Unix vendor of the next twenty years inherited it. When Linux arrived in 1991 it cloned the same toolchain, including the editor, and Bram Moolenaar's Vim, written specifically as a free vi-compatible replacement, became the version most distributions shipped.

Regulatorily, the POSIX standard (IEEE Std 1003.1) mandates that a conforming system provide a vi command with a defined set of behaviours. That makes vi the one editor a portable shell script is allowed to assume exists. Even the most stripped-down systems comply: Alpine Linux's BusyBox includes a tiny vi reimplementation in about a hundred kilobytes; embedded routers, Docker base images, and minimal recovery shells all carry it.

The practical consequence is that learning even basic vi commands, enough to open a file, edit a few lines, save and quit, is the single most portable keyboard skill a Linux user can have. Whatever machine you SSH into in the next decade, whatever container drops you into a broken shell, the muscle memory will transfer.

Further reading and video