RetroADM-3AviVimBill Joyterminals
The ADM-3A terminal's 1979 manual puts cursor movement on Ctrl-H, J, K and L, the same four letters vi uses to move today
Bill Joy wrote vi on ADM-3A terminals at Berkeley, and Vim still answers to two of the manual's four control codes, though no source I read has Joy explaining his choice.

vi moves the cursor with h, j, k and l. The manual for the terminal it was written on moves the cursor with Ctrl and the same four letters. That is the whole puzzle, and it is easier to check than it is to explain.
Start with the manual. The Lear Siegler ADM-3A Operator’s Manual, part number DP104 and dated May 1979 on the catalog page for the PDF, says that “keyboard entry is made using one of the 59 keys on the keyboard.” Page 3-6 covers cursor control. It says “CTRL/H causes the cursor to move non-destructively one character position to the left” and “CTRL/L causes the cursor to advance non-destructively to the next character position on the current line.” Down is “executed by typing the J key while holding down the CTRL key.” Up is “executed by typing the K key while holding down the CTRL key, with the ADM-3A in Cursor Control Mode.”
Four letters, one pattern: left, down, up, right. The cursor moves on control codes, and some of those codes were already doing nearby jobs. The manual says “CTRL/J duplicates the action of the LINE FEED key.”
On page 3-7, the same pattern extends to Home: “Typing HOME while holding down the CTRL key causes the cursor to ‘home’.” (The manual’s text is a scan run through OCR, so the wording is the archive’s version of it.)
Now the editor. In Marshall Kirk McKusick’s history of Berkeley Unix, the line reads: “With the arrival of some ADM-3a terminals offering screen-addressable cursors, Joy was finally able to write vi, bringing screen-based editing to Berkeley.” That sentence puts vi on this terminal, and it explains why a full-screen editor was possible at all. A cursor that could be addressed by the host was the whole trick.
The link between the two is an argument, not a quote. Hillel Wayne’s post, There’s Always More History, argues that because ^H and ^J were already left and down on the ADM, ^K and ^L became up and right, so ADM users were already navigating with those four keys and Joy “used that same logic for vi.” Wayne is reasoning from the hardware, not quoting Joy. Neither Wayne’s post nor McKusick’s chapter, as far as I could read them, has Joy saying “I picked h, j, k, l because of this terminal.”
Vim carries a trace of the same wiring. Its help lists CTRL-H as left and CTRL-J as down, beside h and j. There is no CTRL-K or CTRL-L alias for up and right. Vim lists CTRL-P and space instead, so the old pattern is only half preserved.
The practical result is that a keyboard decision made for one terminal became a habit for a generation of programmers. People who learn vi in 2026 are told it keeps your hands on the home row. That is true, and it is a reason found after the fact. The hands were on the home row because the machine in front of the author gave him nothing else.
What it might lead to is more of this kind of archaeology, because a convention that feels arbitrary is usually a candidate for the same treatment. The manual is the part that tends to go missing from the retelling. A claim about a keyboard is a claim about 59 keys on a specific terminal, and the original page settles it faster than the story does.
The terminal had 59 keys, and vi kept four.