|This article needs additional citations for verification. (September 2011)|
Many flame wars have been fought between groups insisting that their editor of choice is the paragon of editing perfection, and insulting the others. Unlike the related battles over operating systems, programming languages, and even source code indent style, choice of editor usually only affects oneself.
Differences between vi and Emacs
The most important differences between vi and Emacs are presented in the following table:
|Keystroke execution||vi editing retains each permutation of typed keys. This creates a path in the decision tree which unambiguously identifies any command.||Emacs commands are key combinations for which modifier keys are held down while other keys are pressed; a command gets executed once completely typed. This still forms a decision tree of commands, but not one of individual keystrokes.|
|Memory usage and customizability||Historically, vi is a smaller and faster program, but with less capacity for customization. The vim version of vi has evolved to provide significantly more functionality and customization than vi, making it comparable to Emacs[notes 1]. vi start-up time is near instantaneous for small text files, while vim is almost as fast.||Emacs takes longer to start up (even compared to vim) and requires more memory. However, it is highly customizable and includes a large number of features, as it is essentially an execution environment for a Lisp program designed for text-editing.|
|User environment||vi was originally exclusively used inside of a text-mode console, offering no graphical user interface (GUI). Most modern vi derivatives, e.g. MacVim and gVim, include GUIs. However, support for proportionally spaced fonts remains absent. Also lacking is support for different sized fonts in the same document.||Emacs, while also initially designed for use on a console, grew a GUI fairly early on. Current Emacs GUIs include full support for proportionate spacing and font-size variation.|
|Function/navigation interface||vi uses distinct editing modes.||Emacs uses metakey chords.[notes 2]|
|Keyboard||vi uses no <Alt> key and seldom uses the <Ctrl> key. So vi uses only most of the "usual" keys, which even fast typists can get away with.||Emacs uses <Alt> and <Ctrl> keys, and observes the <Shift> variety regularly. Emacs uses all the usual keys regularly, which tends to encourage ambidextrous usage of their symmetry.|
|Language and script support||vi has rudimentary support for languages other than English. Vim is partially multilingual, with support for European, Arabic, Hebrew, and Far East Asian language support only. Notably, Indic language and script support is absent.||Emacs has full support for all Unicode-compatible writing systems.|
Benefits of vi-like editors
- Vi has a modal interface
- Historically, vi loads faster than Emacs. Currently, vim also loads faster than Emacs.
- While deeply associated with UNIX tradition, it runs on all systems that can implement the standard C library, including UNIX, Linux, AmigaOS, DOS, Windows, Mac, BeOS, OpenVMS, IRIX, AIX, HP-UX, BSD and POSIX-compliant systems.
- Extensible and customizable through VimScript or APIs for interpreted languages such as Python, Ruby, Perl, and Lua
- Ubiquitous. Essentially all Unix and Unix-like systems come with vi (or a variant) built-in.
- System rescue environments, embedded systems (notably those with busybox) and other constrained environments often include vi
Benefits of Emacs
- Emacs has a non-modal interface
- One of the most ported computer programs. It runs on a wide variety of operating systems, including most Unix-like systems (GNU/Linux, the various BSDs, Solaris, AIX, IRIX, Mac OS X etc.), MS-DOS, Microsoft Windows, AmigaOS, and OpenVMS. Unix systems, both free and proprietary, frequently provide Emacs bundled with the operating system.
- Extensible and customizable (Lisp programming language variant—Emacs Lisp), with features that include:
- Ability to emulate vi and vim (using viper-mode and evil).
- A powerful and extensible file manager (dired), integrated debugger, and a large set of development and other tools.
- "An OS inside an OS". The extensibility lets Emacs to be programmed far beyond editing features. Even a base install contains several applications, including a news reader, mail agent, games, and additional ones include web browsers, IRC clients, EMMS (audio player with name taken from XMMS - Emacs MultiMedia System), and more. Naturally this also includes integration of development tools - for programming all this makes Emacs a programming IDE at minimum, not just code editor. It is possible to use Emacs as the Window Manager for the X11 window server if Emacs applications (which includes eShell, a VT100 compatible terminal) are sufficient for the user's purposes.
The Church of Emacs, formed by Richard Stallman, is a joke. While it refers to vi as the "editor of the beast" (vi-vi-vi being 6-6-6 in Roman numerals), it does not oppose the use of vi; rather, it calls proprietary software anathema. ("Using a free version of vi is not a sin but a penance.") The Church of Emacs has its own newsgroup, alt.religion.emacs, that has posts purporting to support this parody religion.
Supporters of vi have created an opposing Cult of vi, argued by the more hardline Emacs users to be an attempt to "ape their betters".
Regarding vi's modal nature, some Emacs users joke that vi has two modes – "beep repeatedly" and "break everything". vi users enjoy joking that Emacs's key-sequences induce carpal tunnel syndrome, or mentioning one of many satirical expansions of the acronym EMACS, such as "Escape Meta Alt Control Shift" (a jab at Emacs's reliance on modifier keys). or "Eight Megabytes And Constantly Swapping" (in a time when that was a great amount of memory) or "EMACS Makes Any Computer Slow" (a recursive acronym like those Stallman uses) or "Eventually Munches All Computer Storage", in reference to Emacs's high system resource requirements. GNU EMACS has been expanded to "Generally Not Used, Except by Middle-Aged Computer Scientists" referencing its most ardent fans, and its declining usage among younger programmers compared to IDEs and more graphically-oriented editors. The Emacs distribution includes the full list.
As a poke at Emacs' creeping featurism, vi advocates have been known to describe Emacs as "a great operating system, lacking only a decent editor".
A game among UNIX users, either to test the depth of an Emacs user's understanding of the editor or to poke fun at the complexity of Emacs, involved predicting what would happen if a user held down a modifier key (such as Control or Alt) and typed their own name. A similar "game" was reportedly played among users of the old TECO editor, in which lay the roots of Emacs.
There is a proposed method of creating a pseudorandom character sequence by having a user unfamiliar with vi seated in front of an open editor and asking him to exit the program.
Current state of the editor war
In the past, many small editors modeled after or derived from vi flourished. This was due to the importance of conserving memory with the comparatively minuscule amount available at the time. As computers have become more powerful, many vi clones, Vim in particular, have grown in size and code complexity. These vi variants of today, as with the old lightweight Emacs variants, tend to have many of the perceived benefits and drawbacks of the opposing side. For example, Vim without any extensions requires about ten times the disk space required by vi, and recent versions of Vim can have more extensions and run slower than past versions of Emacs. Moreover, with the large amounts of RAM in modern computers, both vi and Emacs are lightweight compared to large integrated development environments such as Eclipse, which tend to draw derision from vi and Emacs users alike.
Tim O'Reilly said, in 1999, that O'Reilly Media's tutorial on vi sells twice as many copies as that on Emacs (but noted that Emacs came with a free manual). Many programmers use either Emacs and vi or their various offshoots, including Linus Torvalds who uses MicroEMACS.
In addition to vi and Emacs workalikes, pico and its free and open source clone nano and other text editors such as ne often have their own third-party advocates in the editor wars, though not to the extent of vi and Emacs.
Many operating systems, especially GNU/Linux and BSD derivatives, bundle multiple text editors with the operating system to cater to user demand. For example, a default installation of Mac OS X contains Emacs, Vim, nano and ed.
- As of 2013, vim has 1731 kLOC of code (1142 in C + 506 stock distro vimScript + 83 makefile-related), whereas GNU Emacs has 1623 (just 299 in C + 1270 stock distro eLisp + 54 makefile-related). There are many optional eLisp (and vimScript) packages available; the numbers here refer to only code which is actually included in the main download of the respective editor.
- Emacs also has something called "modes"; however, in Emacs these generally refer to long-term interaction states that apply for entire time one works with a given file or dataset, and do not imply a modal interface per se.
- "Carbon Emacs Package". Retrieved 2006-09-27.
- "Aquamacs is an easy-to-use, Mac-style Emacs for Mac OS X". Retrieved 2006-09-27.
- B, Ramprasad (2005-06-24). "GNU Emacs FAQ For Windows 95/98/ME/NT/XP and 2000". Retrieved 2006-09-27.
- Borgman, Lennart (2006). "EmacsW32 Home Page". Retrieved 2006-09-27.
- "GNU Emacs on Windows". Franz Inc. 2006. Retrieved 2006-09-27.
- Ed, man! !man ed
- Rules, Sins, Virtues, Gods and more of The Church of Emacs
- Saint IGNUcius - Richard Stallman
- All about Linux: The unabridged selective transcript of Richard M Stallman's talk at the ANU
- alt.religion.emacs newsgroup
- Saint IGNUcius - Richard Stallman
- satirical expansions of EMACS
- Eric S. Raymond (2004). The art of Unix programming. Addison-Wesley Professional. p. 343. ISBN 978-0-13-142901-7. Retrieved 17 December 2011.
- "Real Programmers Don't Use PASCAL". Datamation: 263–265. July 1983.
- Editor: vi or emacs?
- Stifflog: Stiff asks, great programmers answer
- Results of an experiment comparing Vi and Emacs
- Comparing keystrokes per task
- Humor around Vi, Emacs and their comparisons
- Results of the Sucks-Rules-O-Meter for Vi and Emacs from comments made on the Web
- In the Church of Emacs "using a free version of vi is not a sin, it's a penance."
- Emacs offers Vi functionality, from the Emacs wiki
- Emacs Vs Vi, from a computer-programming consulting firm