Text editors are computer applications that edit plain text. Text editors are fundamental to our work and developers tend to have very strong opinions about which one is the best. In this blog post I’ll discuss some of the history of computing with respect to text editors, and the pros and cons of two of the text editors that developers have a love/hate relationship with – eMacs and Vim.
Modern Text Editors – Some History
To understand modern text editors, you first have to understand where they came from. Below, I’ve broken the history of computing into three eras, each of which had a technological advancement that has spurred the evolution of text editors.
This era represents the origins of computing – computing has a history that goes back all the way to the 1800s; far before modern computers were invented.
The first concept of a computer, the Babbage Difference Engine pictured below, was developed in the 1820s by Charles Babbage. The Difference Engine was used to solve polynomial functions.
Similar machines were created by the late-1800s, and were used to perform differential equations to calculate things like tide variations and artillery paths. Machines in this era were fed instructions for the calculations through punch cards (paper tape with holes punched in readable patterns) and were powered by cranking a handle.
This era represented the move from analog, or mechanical, to digital. In the early 1940s, computers were primarily used for the war effort. Some were put on submarines to calculate the path of torpedoes during World War II. Others were used for cryptography to decode enemy messages (as seen in the 2014 movie “Imitation Game”).
In 1946, the first fully-digital computer, Electronic Numerical Integrator and Computer (ENIAC), was developed in the United States.
ENIAC was designed specifically to compute values for artillery range tables, so it lacked many features that would have made it a generally useful computer. While it was fully digital, the program instructions still had to be manually set into the machine using a plug board.
Commercial computer use at this time was limited, though some big corporations would use computers for big money items, such as finding oil deposits.
One of the most innovative minds of this era was Douglas Englebart, an American engineer. In 1968, he gave a demonstration at the Association for Computing Machinery/ Institute of Electrical and Electronics Engineers (AMI/IEEE) that was so innovative it was retroactively named “the Mother of All Demos.”
Englebart’s demonstration included the introduction of nearly all of the fundamental elements of modern computing, including windows, video conferencing, the internet, and a collaborative real-time editor (like Google docs). He even demonstrated hypertext collaboration, by typing on one screen and having the text appear remotely on another.
One of the biggest innovations to come out of his demonstration was the computer mouse. The Englebart mouse, pictured below, was the first mouse invented.
This era is the modern era, and has everything that we consider computer usage and computing today. Computers in this era have things like compact transistors, silica-based chips, integrated chips, mobility, screens, keyboards, networking, and much more.
This era is also when the widespread commercial use of computers really takes off. From this point forward, every business has a computer.
History of Text Editing
The first text editors were line editors that were developed to debug the punch card programs of the early computers. The original line editors, like the one depicted below, were typewriter-like machines that were hooked up to the punch card tape.
The punch cards could be inserted into the line editor and edits could be made using single keystroke commands. Because the line editors did not have screens, you had to physically print out the paper to see what you had completed.
Two of the first text editors were Text Editor & Corrector (TECO) and ED, which were released in 1962 and 1969, respectively. As you can see on the computer digital representations of TECO below, the first text editors were not very complex.
However, they marked a big step in the progression towards modern text editors. As seen in the photo of a sample code in Sublime Text below, we have evolved a long way since the pioneer text editors.
Emacs and Vim
Two of the text editors I want to focus on in this post are Emacs and Vim, two text editors that evolved directly from ED and TECO. Emacs was initially released in 1976, while Vim was released in 1991.
Though no longer the newest text editors on the market, Emacs and Vim both continue to maintain a strong user base. In fact, their users are so loyal that the competition between the two text editors sparked one of the first internet flame wars and created a text editor subsect of meme culture.
Considering the speed at which our technology evolves, it may seem surprising that these text editors are still so popular. However, Emacs and Vim have several features that differentiate them from the crowd:
The age of these programs is actually one of their largest advantages. They have decades of lessons built-in and work done, meaning they run smoothly and efficiently.
Both Emacs and Vim were built to be used with only a keyboard, so you can go much faster when text editing. Having a system based entirely on keyboard strokes allows you to quickly manipulate the text editor and switch between various modes. When looking to increase your micro-optimization for coding, decreasing the number of times you reach for your mouse can be a major advantage.
Customizable Programming Language
Both Emacs and Vim are fully programmable and customizable, making them easily evolved for any situation.
Great for Ops
Emacs and Vim both ship on any UNIX operating system distribution. This means that if you need to edit text files in a production environment, you are able to launch the Emacs and Vim editors from the server to make quick edits.
Shortcuts for these text editors are built in everywhere. For example, when using Gmail or GitHub, you can use Vim shortcuts and then, once you are on the command line, you can use all of the Emacs chords. Just by familiarizing yourself with Vim and Emacs, you are able to increase your programming knowledge for a multitude of other programs.
The Emacs Help System
The Emacs Help System is one of the features that I really like. If you are trying to figure out what a specific keystroke does, you can click the key and get a pop-up that tells you what the keystroke’s command is and all of the documentation for the command.
Emacs is especially powerful because it also includes a couple first-class applications that are better than most related applications in the field. Two of the Emacs applications that primarily stand out are:
- Magit: Magit is an interface that allows the control system Git to be built right into the Emacs text editor. While it is not a complete Git port, it does allow Git users to perform almost all of their daily tasks from within Emacs.
- Org-Mode: Org-mode is a note-taking and task integration application that is incredibly flexible and powerful. It is all hierarchical, so you can have headers and subheaders within your notes and tasks. You can also customize your notes with things like markdown-style notation, timestamps, and links between the file system and internet sources. For more information about Org-mode, check out the Emacs Org-mode Google Tech Talk.
Though Emacs and Vim have many similar strengths, the way you use each of them is quite different:
- Vim is modular, meaning that it has two different modes:
- Normal mode, during which all of your keystrokes navigate the screen
- Insert mode, during which you can actually enter text.
- Emacs is chord based, meaning all of the commands are based on holding down a combination of keys – like “control + option,” “control + shift,”.
Whichever side you are on, both Emacs and Vim have withstood the test of time and remained efficient text editors in the computing world. The next time you use one of these, or another favorite text editor, take a moment to reflect on all the history that has gone into creating these everyday programs.