TECO stands for Text Editor and Corrector. It began in 1962 as an editor for the PDP-1 at MIT and was carried onto later Digital Equipment Corporation machines, where DEC distributed and documented it for systems including the PDP-11. The DEC PDP-11 TECO User’s Guide presents it as a program for creating and modifying text files on the timesharing systems of the era, the standard way many users put characters into a file before screen editors became common.
What set TECO apart was that its commands were single characters typed in sequence, and that sequence was itself a small program. A TECO command string mixed editing actions with control flow: you could search, insert, loop, and branch, all in the same dense notation. This made TECO famously cryptic to read but extraordinarily powerful, because an experienced user could write a string of TECO commands that performed an entire editing task automatically. The line between using TECO and programming TECO essentially did not exist.
That property is why TECO matters to the history of programming tools. Because command sequences could be saved and replayed, users built libraries of TECO macros to extend the editor’s behavior. At MIT, Richard Stallman and others wrote a large collection of such macros that gave TECO a screen-oriented, real-time display interface. That collection became the original Emacs. In his EMACS paper, Stallman describes how the editor’s programming language was TECO, “modified and extended” so that macros could be written more cleanly than raw TECO allowed.
The same paper is candid that TECO was a poor language to grow large programs in. Stallman notes the original TECO as an example of the deficiencies of macro-language design, and records that the descendants of Emacs moved to Lisp instead, precisely because TECO’s terse, write-only style made big extensions hard to read and maintain. The lesson learned from TECO directly motivated the choice of a real, readable programming language for the next generation of extensible editors.
TECO is little used today, but its influence is permanent. It demonstrated that an editor could be a programmable environment rather than a fixed tool, and the macros people wrote in it seeded Emacs, one of the longest-lived programs in computing. The shift from TECO macros to Emacs Lisp is one of the clearest cases in software history of a tool’s limitations driving the design of its successor.