text editor for the use of text editors with wikipedia see wikipediatext editor support editors like leafpad shown here are often included with operating systems as a default helper application for opening text files a text editor is a type of computer program that edits plain text such programs are sometimes known as notepad software following the naming of microsoft notepad plain text vs rich text 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 fixedlength sequence of one two or four bytes or as a variablelength sequence of one to four bytes in accordance to specific character encoding conventions such as ascii isoiec2022 utf8 or unicode these conventions define many printable characters but also nonprinting characters that control the flow of the text such 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 in the early days of computers plain text was displayed using a monospace font such that horizontal alignment and columnar formatting were sometimes done using whitespace characters for compatibility reasons this tradition has not changed rich text on the other hand may contain metadata character formatting data eg typeface size weight and style paragraph formatting data eg indentation alignment letter and word distribution and space between lines or other paragraphs and page specification data eg size margin and reading direction rich text can be very complex rich text can be saved in binary format eg doc text files adhering to a markup language eg rtf or html or in a hybrid form of both eg 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 eg svg history a box of punched cards with several program decks 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 cardreader magnetic tape and disk cardimage files created from such card decks often had no lineseparation characters at all and assumed fixedlength 80character records an alternative to cards was punched paper tape it could be created by some teleprinters such as the teletype which used special characters to indicate ends of records the first text editors were line editors oriented to teleprinter or typewriterstyle terminals without displays commands often a single keystroke effected edits to a file at an imaginary insertion point 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 when computer terminals with video screens became available screenbased text editors sometimes called just screen editors became common one of the earliest fullscreen editors was o26 which was written for the operator console of the cdc 6000 series computers in 1967 another early fullscreen editor was vi written in the 1970s it is still a standard editor 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 undoredo 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 types of text editors emacs a text editor popular among programmers running on microsoft windows some text editors are small and simple while others offer broad and complex functions for example unix and unixlike operating systems have the pico editor or a variant but many also include the vi and emacs editors microsoft windows systems come with the simple notepad though many peopleespecially programmersprefer other editors with more features under apple macintoshs classic mac os there was the native simpletext which was replaced in mac os x by textedit which combines features of a text editor with those typical of a word processor such as rulers margins and multiple font selection these features are not available simultaneously but must be switched by user command or through the program automatically determining the file type most word processors can read and write files in plain text format allowing them to open files saved from text editors saving these files from a word processor however requires ensuring the file is written in plain text format and that any text encoding or bom settings wont obscure the file for its intended use nonwysiwyg word processors such as wordstar are more easily pressed into service as text editors and in fact were commonly used as such during the 1980s the default file format of these word processors often resembles a markup language with the basic format being plain text and visual formatting achieved using nonprinting control characters or escape sequences later word processors like microsoft word store their files in a binary format and are almost never used to edit plain text files some text editors can edit unusually large files such as log files or an entire database placed in a single file simpler text editors may just read files into the computers main memory with larger files this may be a slow process and the entire file may not fit some text editors do not let the user start editing until this readin is complete editing performance also often suffers in nonspecialized editors with the editor taking seconds or even minutes to respond to keystrokes or navigation commands by only storing the visible portion of large files in memory editing performance improves some editors are programmable meaning eg they can be customized for specific uses with a programmable editor it is easy to automate repetitive tasks or add new functionality or even implement a new application within the framework of the editor one common motive for customizing is to make a text editor use the commands of another text editor with which the user is more familiar or to duplicate missing functionality the user has come to depend on software developers often use editor customizations tailored to the programming language or development environment they are working in the programmability of some text editors is limited to enhancing the core editing functionality of the program but emacs can be extended far beyond editing text filesfor web browsing reading email online chat managing files or playing games emacs can even emulate vi its rival in the traditional editor wars of unix culture an important group of programmable editors uses rexx and macros can be typed most such editors are derivatives of ispfpdf edit or of xedit ibms flagship editor for vmsp through zvm among them are the kedit x2 uniedit and sedit a text editor written or customized for a specific use can determine what the user is editing and assist the user often by completing programming terms and showing tooltips with relevant documentation many text editors for software developers include source code syntax highlighting and automatic indentation to make programs easier to read and write programming editors often let the user select the name of an include file function or variable then jump to its definition some also allow for easy navigation back to the original section of code by storing the initial cursor location or by displaying the requested definition in a popup window or temporary buffer some editors implement this ability themselves but often an auxiliary utility like ctags is used to locate the definitions typical features find and replace text editors provide extensive facilities for searching and replacing text either on groups of files or interactively advanced editors can use regular expressions to search and edit text or code cut copy and paste most text editors provide methods to duplicate and move text within the file or between files ability to handle utf8 encoded text text formatting text editors often provide basic formatting features like line wrap autoindentation bullet list formatting using ascii characters comment formatting syntax highlighting and so on undo and redo as with word processors text editors provide a way to undo and redo the last edit or more oftenespecially with older text editorsthere is only one level of edit history remembered and successively issuing the undo command will only toggle the last change modern or more complex editors usually provide a multiplelevel history such that issuing the undo command repeatedly will revert the document to successively older edits a separate redo command will cycle the edits forward toward the most recent changes the number of changes remembered depends upon the editor and is often configurable by the user advanced features macro or procedure definition to define new commands or features as combinations of prior commands or other macros perhaps with passed parameters or with nesting of macros multifile editing the ability to edit multiple files during an editsession perhaps remembering the currentline cursor of each file to insert repeated text into each file move text among files etc data transformation reading or merging the contents of another text file into the file currently being edited some text editors provide a way to insert the output of a command issued to the operating systems shell also a caseshifting feature could translate to lowercase or uppercase filtering some advanced text editors allow the editor to send all or sections of the file being edited to another utility and read the result back into the file in place of the lines being filtered this for example is useful for sorting a series of lines alphabetically or numerically doing mathematical computations indenting source code and so on syntax highlighting contextually highlights source code markup languages config files and other text that appears in an organized or predictable format editors generally allow users to customize the colors or styles used for each language element some text editors also allow users to install and use themes to change the look and feel of the editors entire user interface extensibility a text editor intended for use by programmers must provide some plugin mechanism or be scriptable so a programmer can customize the editor with features needed to manage individual software projects customize functionality or key bindings for specific programming languages or version control systems or conform to specific coding styles specialised editors some editors include special features and extra functions for instance source code editors are text editors with additional functionality to facilitate the production of source code these often feature userprogrammable syntax highlighting and code navigation functions as well as coding tools or keyboard macros similar to an html editor see below folding editors this subclass includes socalled orthodox editors that are derivatives of xedit editors that implement folding without programingspecific features are usually called outliners see below ides integrated development environments are designed to manage and streamline large programming projects they are usually only used for programming as they contain many features unnecessary for simple text editing world wide web authors are offered a variety of html editors dedicated to the task of creating web pages these include dreamweaver kompozer and e text editor many offer the option of viewing a work in progress on a builtin html rendering engine or standard web browser most web development is done in a dynamic programming language such as ruby or php using a source code editor or ide the html delivered by all but the simplest static web sites is stored as individual template files that are assembled by the software controlling the site and do not compose a complete html document mathematicians physicists and computer scientists often produce articles and books using tex or latex in plain text files such documents are often produced by a standard text editor but some people use specialized tex editors outliners also called treebased editors because they combine a hierarchical outline tree with a text editor folding see above can be considered a specialized form of outlining collaborative editors allow multiple users to work on the same document simultaneously from remote locations over a network the changes made by individual users are tracked and merged into the document automatically to eliminate the possibility of conflicting edits these editors also typically include an online chat component for discussion among editors simultaneous editing is a technique in enduser development research to edit all items in a multiple selection it allows the user to manipulate all the selected items at once through direct manipulation the lapis text editor plugin for gedit are examples of this technique the lapis editor can also create an automatic multiple selection based on an example item distractionfree editors provide a minimalistic interface with the purpose of isolating the writer from the rest of the applications and operating system thus being able to focus on the writing without distractions from interface elements like a toolbar or notification area programmable editors can usually be enhanced to perform any or all of these functions but simpler editors focus on just one or like gphpedit are targeted at a single programming language list of text editors comparison of text editors editor war file viewer does not change file faster for very large files hex editor used for editing binary files stream editor used for noninteractive editing notes orthodox editors as a special class of advanced editors discusses xedit and its clones with an emphasis of folding capabilities and programmability best text editors for mac os review authority control bne xx554725 bnf cb11931946h data gnd 40135652 lccn sh85134303 