Recent from talks
Nothing was collected or created yet.
Editor war
View on WikipediaThis article's tone or style may not reflect the encyclopedic tone used on Wikipedia. (September 2024) |
The editor war is the rivalry between users of the Emacs and vi (now usually Vim, or more recently Neovim) text editors. The rivalry has become an endearing part of hacker culture and the free software community.
The Emacs versus vi debate was one of the original "holy wars" conducted on Usenet groups.[1] Since at least 1985, many flame wars have occurred between those insisting that their editor of choice is the paragon of editing perfection, and insulting the opposing group accordingly.[2] Related battles have been fought over operating systems, programming languages, version control systems, and even source code indent style.[3][4]
Background
[edit]
As of 2020[update], both Emacs and vi can lay claim to being among the longest-lived application programs of all time,[5] as well as being the two most commonly used text editors on Linux and Unix.[6][needs update] Many operating systems, especially Linux and BSD derivatives, bundle multiple text editors with the operating system to cater to user demand. For example, a default installation of macOS contains ed, pico (nano before macOS Monterey 12.3[7]), TextEdit, and Vim.[8]
Humor
[edit]
The Church of Emacs,[9] formed by Emacs and the GNU Project's creator Richard Stallman, is a parody religion.[10] 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 a case of anathema. ("Using a free version of vi is not a sin but a penance."[11]) The Church of Emacs has its own newsgroup, alt.religion.emacs, that has posts purporting to support this belief system.
Regarding vi's modal nature (a common point of frustration for new users),[12] 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. These include "Escape Meta Alt Control Shift" (a jab at Emacs's reliance on modifier keys),[13] "Eight Megabytes And Constantly Swapping" (in a time when that was a great amount of memory), "EMACS Makes Any Computer Slow" (a recursive acronym like those Stallman uses),[14] or "Eventually Munches All Computer Storage" in reference to Emacs's high system resource requirements. Nonetheless, key bindings from both editors are found in many other contexts. 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 in comparison to more graphically oriented editors such as Atom, BBEdit, Sublime Text, Kate, TextMate, Notepad++, and Visual Studio Code.[citation needed]
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".[citation needed] Emacs advocates have been known to respond that the editor is actually very good, but the operating system could use improvement (referring to Emacs' famous lack of concurrency, which has now been added[15]).
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 Ctrl or Alt) and typed their own name. This game humor originated with users of the older TECO editor, which was the implementation basis, via macros, of the original Emacs.[16]
The Google search engine also joined in on the joke by having searches for vim resulting in the question "Did you mean: emacs" prompted at the top of the page, and searches for emacs resulting in "Did you mean: vim".[17]
In the web series A Murder at the End of the World, there is a scene referencing the editor wars where a character asks a woman if she uses Vi or Emacs.[18]
See also
[edit]References
[edit]- ^ "Holy War (Hacker Jargon)". Archived from the original on 2012-04-02. Retrieved 2016-11-30.
- ^ "EMACS vs. vi: The endless geek 'holy war'". Archived from the original on 2016-11-30. Retrieved 2016-11-30.
- ^ "Just Let Me Code". Archived from the original on 2015-05-01. Retrieved 2015-04-24.
- ^ "Why Coding Style Matters". Archived from the original on 2015-05-03. Retrieved 2015-04-24.
- ^ Auerbach, David (9 May 2014). "The Oldest Rivalry in Computing". Slate.
two rival programs can stake a claim to being among the longest-lived applications of all time. Both programs are about to enter their fifth decades. Both programs are text editors, for inputting and editing code, data files, raw HTML Web pages, and anything else. And they are mortal enemies.
- ^ "Choosing an Editor".
these two editors express sharply contrasting design philosophies, but both are extremely popular and command great loyalty from identifiable core user populations. Surveys of Unix programmers consistently indicate about a 50/50 split between them, with all other editors barely registering.
- ^ Tsai, Michael J. "Michael Tsai - Blog - macOS 12.3 Removed the nano Text Editor". Retrieved 2025-03-19.
- ^ "Ed, man! !man ed". Gnu.org. Retrieved 1 December 2014.
- ^ "Rules, Sins, Virtues, Gods and more of The Church of Emacs". Gnu.org. Retrieved 1 December 2014.
- ^ "Saint IGNUcius - Richard Stallman". Stallman.org. Archived from the original on 22 November 2014. Retrieved 1 December 2014.
- ^ "The unabridged selective transcript of Richard M Stallman's talk at the ANU". Linuxhelp.blogspot.com. Archived from the original on 4 October 2011. Retrieved 1 December 2014.
- ^ "vi (Hacker Jargon)".
- ^ "Some funny acronym expansions of Emacs". Gnu.org. Archived from the original on February 16, 2021. Retrieved 1 December 2014.
- ^ Rösler, Wolfram. "The Unix Acronym List". Archived from the original on February 16, 2021. Retrieved March 4, 2021.
- ^ "Concurrency has landed (was: Please test the merge of the concurrency br". lists.gnu.org. Retrieved 2020-12-08.
- ^ "Real Programmers Don't Use PASCAL". Datamation: 263–265. July 1983.
- ^ "Google suggest vi for Emacs and Emacs for vi | Hacker News". Hacker News. Retrieved 2022-04-07.
- ^ "A Murder at the End of the World: Are you Vi or Emacs?". xenodium.com. 22 December 2023. Retrieved 2023-12-26.
External links
[edit]- Results of an experiment comparing Vi and Emacs
- Comparing keystrokes Archived 2014-05-17 at the Wayback Machine 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 WikiWikiWeb
- The Right Size for an Editor discussing vi and Emacs in relatively modern terms
Editor war
View on GrokipediaOverview
Definition and Scope
The editor war denotes the enduring, often lighthearted but fiercely contested rivalry among users of modal text editors such as vi and its derivatives like Vim, and extensible editors like Emacs, primarily within Unix and open-source software communities.[7] This cultural phenomenon highlights passionate discussions over editor preferences, reflecting broader tensions in software tool selection and philosophy among developers and system administrators.[8] The scope of the editor war is confined to command-line text editors used for programming, scripting, and system administration tasks, distinguishing it from graphical word processors or comprehensive integrated development environments (IDEs), except where such tools explicitly engage with the vi-Emacs divide.[7] While modern IDEs may incorporate vi-like modes or Emacs keybindings, the core rivalry remains rooted in these foundational Unix-era tools and their minimalist versus highly customizable approaches. The debate traces its roots to the mid-1970s software development era, with vi originating in 1976 as a visual interface developed by Bill Joy at the University of California, Berkeley, building on the earlier ex line editor.[9] Similarly, Emacs emerged in 1974 as a set of macros for the TECO editor, initiated by Richard Stallman along with collaborators including Guy L. Steele and David Moon at MIT's AI Laboratory.[5] By the mid-1980s, the rivalry had coalesced into public "holy wars" on Usenet, formalizing the humorous yet divisive exchanges that continue to define hacker culture.[7]Cultural Significance
The editor war, particularly the longstanding rivalry between vi and Emacs, stands as one of the inaugural "holy wars" in hacker culture, characterized by intense, recurring flame wars on Usenet that exemplified the tribalism emerging in early internet and free software communities. These debates transcended mere technical preferences, fostering a sense of communal identity where allegiance to one editor over the other signaled deeper philosophical stances, such as vi's emphasis on minimalism and efficiency versus Emacs's focus on extensibility and customization.[10] By embodying passionate, often humorous divisions within the open-source movement, the conflict helped establish norms for vigorous discourse in tech forums, where minor differences in tools or practices could escalate into emblematic battles. Within developer circles, selecting an editor became a rite of passage, marking initiation into the hacker ethos and reinforcing group affiliations that persisted across projects and platforms.[1] This allegiance often reflected not just practical habits but a broader worldview, with vi users prizing portability and speed in resource-constrained environments, while Emacs advocates championed an all-encompassing, programmable workspace.[10] The war's symbolic weight extended to the free software ethos, where Emacs, developed under the GNU Project, symbolized collaborative extensibility, contrasting with vi's roots in proprietary Unix traditions before its open-source adaptations.[10] The rivalry's broader cultural footprint is evident in its role as a template for subsequent tech debates, inspiring analogous "holy wars" like tabs versus spaces in code indentation, which similarly pit flexibility against uniformity in developer practices. Anecdotal evidence from the era underscores the divide's persistence; a 1991 Usenet poll revealed roughly half of respondents favoring vi, highlighting the near-even schism that fueled ongoing cultural lore in Linux and Unix communities.[11] This enduring polarization, far beyond any objective merits of the editors, cemented the editor war as a cornerstone of open-source tribalism, where tool choice became a proxy for innovation and ideology.[1]History
Origins of vi and Emacs
The vi text editor was created in 1976 by Bill Joy, then a graduate student at the University of California, Berkeley, as a visual mode extension to the ex line editor he had co-developed with Chuck Haley, positioning it as a more intuitive alternative to the command-line ed editor used in early Unix systems.[9] Designed amid the hardware limitations of the era, vi incorporated modal editing—separating command and text-entry modes—to optimize for sluggish peripherals like the ADM-3A terminal and 300-baud modems, enabling efficient operation with minimal screen refreshes and keystrokes despite delays in display updates.[12] Within Berkeley's dynamic Unix research environment, vi was bundled into the inaugural Berkeley Software Distribution (BSD) release in 1977, facilitating its dissemination among academic users and contributing to BSD's evolution as a major Unix variant.[13][14] A pivotal advancement occurred in 1981, when Berkeley licensed vi for inclusion in AT&T's UNIX System III, marking its transition into commercial Unix distributions and accelerating its standardization across diverse systems. Concurrently, Emacs emerged in 1976 at the MIT Artificial Intelligence Laboratory, where Richard Stallman and Guy L. Steele implemented it as a suite of macros extending the TECO editor on the Incompatible Timesharing System (ITS) for PDP-10 machines, aiming to streamline complex editing tasks in a research setting.[15] Over the ensuing years, these TECO macros matured into a robust, self-documenting framework with integrated online documentation, tutorials, and help systems, while its extensible architecture allowed users to redefine commands and add functionality via custom macros during runtime.[5] Emacs embodied the MIT AI Lab's ethos of open collaboration and software sharing, which prefigured free software principles by encouraging communal modifications and redistribution. In 1985, Stallman launched GNU Emacs (initially version 1, later refined to version 13 for public release) as the cornerstone program of the GNU Project, explicitly advancing the vision of a fully free Unix-compatible operating system.[16] These parallel developments unfolded in the Unix-centric landscapes of Berkeley and MIT, with vi propagating through BSD distributions and Emacs aligning with free software advocacy, establishing both as foundational tools in early computing workflows.[14][13] vi's modal approach contrasted with the modeless paradigm that Emacs adopted, where editing commands integrate seamlessly with text input without mode switches.[9]Emergence of the Rivalry
The rivalry between vi and Emacs crystallized in the mid-1980s amid the growing adoption of Unix systems in academic and commercial settings, where debates over text editor preferences began to escalate into community-wide conflicts. The first documented flare-ups occurred on Usenet, particularly in groups like comp.unix and net.unix-wizards during 1984 and 1985, as users launched flame wars centered on the editors' usability—such as modal versus non-modal interfaces—and philosophical underpinnings, including simplicity versus extensibility.[7] These early discussions marked the onset of what would become one of computing's most enduring "holy wars," transforming technical disagreements into passionate, ritualistic exchanges.[10] A pivotal catalyst was Richard Stallman's vigorous advocacy for Emacs within free software communities. As the founder of the GNU Project, Stallman released GNU Emacs in March 1985, positioning it as a freely modifiable, Lisp-based powerhouse that embodied the principles of open collaboration and user empowerment.[1] This push clashed directly with vi's entrenched role as the lightweight, ubiquitous default in commercial Unix distributions from vendors like Sun Microsystems and AT&T, which prioritized minimal resource use and broad compatibility over customization.[17] Stallman's efforts to promote Emacs as essential infrastructure for free software development intensified the divide, drawing vi loyalists who viewed it as an overengineered intrusion. The conflict spread rapidly through 1980s Bulletin Board Systems (BBSes) and the nascent internet, where hobbyist and professional programmers shared experiences and frustrations. Usenet threads titled "Emacs vs. vi" proliferated, reaching a peak of activity in 1987 with informal polls, user manifestos, and comparative benchmarks that fueled ongoing contention without yielding consensus.[10] These exchanges not only amplified the rivalry across geographically dispersed communities but also embedded it in hacker culture, turning editor choice into a badge of identity. From the outset, stereotypes emerged that defined the opposing camps: vi users were often portrayed as efficient minimalists who prized speed and portability in resource-constrained environments, while Emacs users were seen as power-customizers willing to invest in complex configurations for unparalleled flexibility.[1] Despite sporadic attempts at reconciliation, such as neutral tool integrations, the schism persisted unresolved, becoming firmly entrenched by 1990 as both editors influenced subsequent tools and debates in open-source ecosystems.[7]Core Rivalries and Debates
vi/Vim vs. Emacs: Key Arguments
The rivalry between vi/Vim and Emacs centers on fundamental differences in design philosophy and user experience, with proponents of each editor advancing distinct usability arguments. Advocates for vi and its successor Vim emphasize the efficiency of modal editing, where the interface switches between insertion and command modes, allowing users to build speed through muscle memory and chord-like key combinations without lifting hands from the home row. This approach is particularly valued in resource-constrained environments like remote servers, where vi's minimal footprint enables quick startups and low overhead, making it ubiquitous on Unix-like systems.[18] Critics of Emacs from the vi camp often portray it as an overbuilt "operating system masquerading as an editor," arguing that its expansive scope leads to unnecessary complexity and bloat for straightforward text manipulation tasks.[19] In contrast, Emacs supporters highlight the intuitiveness of its modeless editing paradigm, where keys always perform insertion or navigation without mode shifts, reducing cognitive load for beginners and enabling fluid, free-form composition. The editor's profound extensibility through Emacs Lisp—a full programming language integrated at its core—allows users to embed diverse tools directly, such as email clients like RMAIL for reading and replying to messages or even simple games, transforming Emacs into a customizable workspace for complex, multi-task workflows.[18][5] From this perspective, vi appears archaic and rigidly limited, ill-suited for modern programming demands that require seamless integration beyond basic editing.[19] At the heart of the debate lies a philosophical schism: vi embodies the Unix philosophy of tools that "do one thing well," prioritizing simplicity, modularity, and interoperability with other utilities over all-encompassing functionality.[19] Emacs, conversely, represents an integrated environment where the editor evolves into a self-sufficient Lisp-based platform, encouraging deep personalization but demanding ongoing investment in configuration. Learning curve arguments further divide users, with vi's initial modal hurdle seen as a one-time barrier yielding long-term efficiency, while Emacs' gentler entry gives way to a perpetual customization process that some view as empowering and others as daunting.[18] Common refrains in the community underscore these tensions, such as vi loyalists dismissing Emacs as needlessly heavyweight, while Emacs enthusiasts proclaim it the tool of "real programmers" capable of handling any task through extension.[19] These exchanges, often laced with humor, reflect enduring loyalties formed in the early days of Unix development.Technical Comparisons
The editing paradigms of vi and its derivative Vim differ fundamentally from those of Emacs. Vi employs a modal system with three primary modes: normal mode for navigation and command issuance, insert mode for text entry, and command mode for executing ex-style commands like substitutions.[20] This modal approach enhances efficiency for repetitive tasks by allowing users to stay in normal mode for quick edits—such as using motion commands (e.g.,w for word) combined with operators (e.g., d for delete) and counts (e.g., 3dw to delete three words)—without interrupting workflow to enter text unnecessarily.[20] In contrast, Emacs uses a non-modal paradigm relying on key combinations, typically involving modifier keys like Ctrl or Meta (Alt), to invoke commands directly while editing.[21] Emacs organizes text into buffers, which are internal representations of files or scratch areas, enabling seamless switching between multiple documents without reloading.[21] This buffer-centric model supports a unified editing environment but requires memorizing chord-like sequences (e.g., C-x C-s to save), differing from vi's mode-switching via single keystrokes like Escape.[21]
Extensibility in Emacs is achieved primarily through Emacs Lisp (Elisp), a dialect of Lisp integrated directly into the editor, allowing users to define custom functions, modes, and plugins that modify core behavior. For instance, Org-mode, a popular Elisp-based extension, provides structured note-taking, task management, and document authoring capabilities by leveraging buffers and dynamic key bindings. Vim, on the other hand, uses Vimscript (or its modern Vim9 variant) for scripting, along with Ex commands for configuration and automation, enabling plugin development for features like syntax highlighting or folding.[22] While both languages support variables, functions, and control structures, Elisp's homoiconic nature facilitates deeper introspection and modification of Emacs internals, whereas Vimscript emphasizes concise mappings and expressions for editor tweaks.[22] Resource-wise, Emacs configurations often consume significantly more memory due to its Lisp interpreter and loaded packages, making it less ideal for resource-constrained environments, while vi/Vim remains lighter, suiting embedded systems.[23]
Performance benchmarks highlight vi/Vim's advantages in startup time and resource efficiency. Vim launches much faster than Emacs without optimizations like the daemon mode, due to vi's simpler architecture.[23] On low-end or embedded hardware, Vim exhibits lower CPU usage during operations like scrolling large files, as its modal design avoids constant event polling inherent in Emacs's extensible framework.[23] Both editors support terminal-based operation across platforms, but Emacs offers native GUI modes via toolkits like X11 or GTK, adding optional overhead for visual features.[21] An empirical study of academic writing tasks found experienced Emacs users completing edits faster than Vim users in some scenarios, though novices benefited more from vi's predictability; however, these results pertain to task completion rather than raw system performance.[24]
Standardization further distinguishes the editors: vi is defined in the POSIX.1 standard, ensuring a minimal, portable implementation across Unix-like systems with required features like basic modes and commands.[20] Emacs, developed as part of the GNU Project, serves as a de facto standard for GNU/Linux environments, where it is the default extensible editor in distributions like those from the Free Software Foundation.[6]
