vile is a text editor that combines aspects of the Emacs and vi editors. These editors are traditionally located on opposing sides of the editor wars, as users of either tend to have strong sentiments against the editor they do not use. vile attempts to reconcile these positions.
vile is an acronym which stands for “VI Like Emacs”. vile 9.6 is featured in Chapter 18 of the O’Reilly book “Learning the vi and Vim Editors”. An older version (vile 8.0) was presented in Chapter 12 of the O’Reilly book “Learning the vi Editor”.
vile was created and originally maintained by Paul Fox. In 1996, maintenance was taken over by Thomas Dickey, who had provided many major contributions to the codebase over the preceding years.
Historically, vile’s documentation has focused on differences from vi. This is in contrast to the other common vi-clones (elvis, nvi and vim), which have combined their respective extensions with the original vi documentation.
vile’s documentation is three parts:
- The online help file (type :h)
- Specialized topics such as the macro language (text files)
- Built-in documentation.
- Tables of commands and other data
- Dynamic windows showing register contents, mode-settings, etc.
vile is built from a combination of hand-crafted code and tables processed by a special-purpose program. The predefined information from the tables can be rendered in various ways, including showing the available commands, providing name-completion, etc. In other flavors of vi, the analogous tables are not distinct from the hand-crafted code.
In other vi flavors, the information shown is static, requiring interaction from the user to make it update. In vile, however, this information is dynamic—it updates these special windows as changes are made to the features they render, e.g., the list of all buffers in memory, the mode-settings corresponding to the buffer which has focus, etc.
While many of vile’s features are now found in other vi-compatible editors, some of the most powerful were implemented before widespread adoption in the others. For example, multiple windows were early features in vile (and xvi) from the start. The same applies to reading from pipes, complex fences. Some of this is brought out in the O’Reilly book, though no careful study has been made of the way in which features are adopted and adapted across the vi and emacs variants.