Emacs; (Editing MACroS) The non plus ultra of hacker editors, a programmable text editor with an entire LISP system inside it. It was originally written by Richard Stallman at the MIT AI lab; AI Memo 554 described it as "an advanced, self-documenting, customizable, extensible real-time display editor". It has since been reimplemented any number of times, by various hackers, and versions exist that run under most major operating systems. Perhaps the most widely used version, also written by Stallman and now called "GNU EMACS" or GNUMACS, runs principally under Unix. (Its close relative XEmacs is the second most popular version.) It includes facilities to run compilation subprocesses and send and receive email or news; many hackers, before the time of GUIs, spent up to 80% of their tube time inside it. Other variants include GOSMACS, CCA EMACS, UniPress EMACS, Montgomery EMACS, jove, epsilon, and MicroEMACS. Some EMACS versions running under window managers iconify as an overflowing kitchen sink, perhaps to suggest the one feature the editor does not (yet) include.
The latest stable release of GNU EMACS, 21.3, was released on March 24, 2003. That was, of course, a moving target. A more recent release as of August 2016 is 24.5 (released April 10, 2015.)
Vi vs. Emacs
Emacs vs vi is the subject of a holy war, but this has largely been settled by the rise of WYSIWYG editors, which have tended to displace both options, and faster hardware, which renders the baroque nature of Emacs irrelevant. The Emacs camp is sometimes jokingly referred to as the "Church of Emacs".
The space-cadet keyboard was an inspiration for Emacs. This is where all the C-x (That's Emacs notation for pressing the Control key while hitting the x key) and M-x (same thing, only with the Alt key instead of the Control key) commands came from. These chorded keystrokes make use of "buckies", or special function keys like Control, Alt, and Shift. The name bucky comes from the early days of keyboards, before they standardized on ASCII. In those days, characters used 7 bits, and bucky keys turned on extra bits, which were called bucky bits, meta bits, or high bits, to the top of the character's byte. This changed the value of the character's byte, and produced a different character.
The use of buckies means that an experienced Emacs user has a wide range of commands available in just a few keystrokes, and doesn't have to take their hands off the main keyboard to use the arrow keys or the mouse. On the downside, there are a lot of commands to memorize (although you can usually muddle along with the arrow keys or the menu). Also, some key chords are hard to pull off. But at least Emacs is better than the space-cadet keyboard. There are occasionally double bucky|double buckies (where you press Ctrl, Alt, and another key) but triple or even quadruple buckies are very rare. (A triple bucky would require the use of the Shift key. Quadruple or quintuple bucky would need super and hyper modifier keys, which can be defined using xmodmap.)
Around version 19 a fork of the GNU Emacs project resulted in an alternate version XEmacs. Both versions are now actively developed. The reasons for the fork are detailed on http://www.xemacs.org, but in short you could say that GNU Emacs is Free Software while XEmacs is more Open Source Software. XEmacs readily adopts changes from Emacs into its code base, so XEmacs arguably has more features. In practice the editors are much alike, so most you read about Emacs should apply to XEmacs and vice versa.
ELSE, the Emacs Language Sensitive Editor is an installable mode of the editor.
A primary attraction of Emacs is its excellent syntax highlighting (called font-locking) and indentation support, as well as a lot of advanced editing tricks. Functions such as indent-function, hungry delete and other advanced tricks makes Emacs users incredibly productive. The flip side of the coin is that this enormous functionality has to be mastered, which takes some time.
Emacs comes with an excellent tutorial and auto-generated documentation. To access the tutorial, press h while holding down the Control key, release the control key and press t.
- Emacs keystrokes
- Emacs modes
- Keyboard shortcuts at a glance
- Emacs tips and tricks to play well with LQWiki
- Homepage (www.gnu.org)
- Wiki (www.emacswiki.org)
- Mailing lists (www.nabble.com)
- XEmacs homepage (www.xemacs.org)
This article is based, in whole or in part, on entry or entries in the Jargon File.