A text editor is interactive software that allows a user to edit plain text, such as Notepad. As with any software, a text editor can be installed onto a system, but often a relatively simple text editor is included in a default installation of an operating system (OS) since editing text files is a relatively basic need for any system and since a simple text editor can be provided at relatively low cost. As source code is text, any text editor can be used to edit code, but a source-code editor is designed with features specifically intended for editing code. Some provide integration with software development tools and provide a debugging environment.
Plain text and rich text There are important differences between plain text (created and edited by text editors) and rich text (such as that created by word processors or desktop publishing software). Plain text exclusively consists of character representation. Each character is represented by a fixed-length sequence of one, two, or four bytes, or as a variable-length sequence of one to four bytes, in accordance to specific character encoding conventions, such as ASCII, ISO/IEC 2022, Shift JIS, UTF-8, or UTF-16. These conventions define many printable characters, but also non-printing characters that control the flow of the text, such as space, line break, and page break. Plain text contains no other information about the text itself, not even the character encoding convention employed. Plain text is stored in text files, although text files do not exclusively store plain text. Since the early days of computers, plain text was (once by necessity and now by convention) generally displayed using a monospaced font, such that horizontal alignment and columnar formatting were sometimes done using whitespace characters. Rich text, on the other hand, may contain metadata, character formatting data (e.g. typeface, size, weight and style), paragraph formatting data (e.g. indentation, alignment, letter and word distribution, and space between lines or other paragraphs), and page specification data (e.g. size, margin and reading direction). Rich text can be very complex. Rich text can be saved in binary format (e.g. DOC), text files adhering to a markup language (e.g. RTF or HTML), or in a hybrid form of both (e.g. Office Open XML). Text editors are intended to open and save text files containing either plain text or anything that can be interpreted as plain text, including the markup for rich text or the markup for something else (e.g. SVG).
History
Before text editors existed, computer text was punched into cards with keypunch machines. Physical boxes of these thin cardboard cards were then inserted into a card reader. Magnetic tape, drum and disk card image files created from such card decks often had no line-separation characters at all, and assumed fixed-length 80- or 90-character records. An alternative to cards was Punched tape. It could be created by some teleprinters (such as the Teletype), which used special characters to indicate ends of records. Some early operating systems included batch text editors, either integrated with language processors or as separate utility programs; one early example was the ability to edit SQUOZE source files for SCAT in the SHARE Operating System. The first interactive text editors were "line editors" oriented to teletypes: teleprinter-style or typewriter-style terminals that mechanically printed both input and output on the same continuous roll of paper, without an illuminated display. Commands (often a single keystroke) effected edits to a file at an insertion point, that the operator needed to keep track of, called the "cursor". Edits were verified by typing a command to print a small section of the file, and periodically by printing the entire file. In some line editors, the cursor could be moved by commands that specified the line number in the file, text strings (context) for which to search, and eventually regular expressions. Line editors were major improvements over keypunching. Some line editors could be used by keypunch; editing commands could be taken from a deck of cards and applied to a specified file. Some common line editors supported a "verify" mode in which change commands displayed the altered lines. An example configuration, circa 1975, was a Teletype Model 33 as a console to a PDP-11 using Version 6 Unix, manipulating text with the ed, the standard UNIX text editor. When computer terminals with video screens became available, screen-based text editors (sometimes called just "screen editors") became common. One of the earliest full-screen editors was O26, which was written for the operator console of the CDC 6000 series computers in 1967. Another early full-screen editor was vi. Written in the 1970s, it is still a standard editor on Unix and Linux operating systems. Also written in the 1970s was the UCSD Pascal Screen Oriented Editor, which was optimized both for indented source code and general text. Emacs, one of the first free and open-source software projects, is another early full-screen or real-time editor, one that was ported to many systems. The 1977 Commodore PET was the first mass-market computer to feature a full-screen editor. A full-screen editor's ease-of-use and speed (compared to the line-based editors) motivated many early purchases of video terminals. The core data structure in a text editor is the one that manages the string (sequence of characters) or list of records that represents the current state of the file being edited. While the former could be stored in a single long consecutive array of characters, the desire for text editors that could more quickly insert text, delete text, and undo/redo previous edits led to the development of more complicated sequence data structures. A typical text editor uses a gap buffer, a linked list of lines (as in PaperClip), a piece table, or a rope, as its sequence data structure.
Typology
… excerpt ends here. Continue reading the full article.





