IntroductionOk, so I'm probably biased on this subject. Harvard's computer science department teaches Vi as its standard text editor; I never was introduced to Emacs until a few months later, and not in the most pleasant of ways.
The story goes like this: I was running some backgrounded processes on the university Unix servers, and I accidentally started Emacs from the command prompt. I then spent the next hour trying to quit. Unsuccessfully. The most I could figure out was how to play Go-Moku against the computer (and lose to it every time). Eventually I just killed off the terminal.
Looking back on that, I probably should have just logged in from somewhere else and killed the process. Still, though, this episode has scarred my memory for life.
Vi and its improved descendant Vim are text editors, programs whose purpose is to edit plain text files (like Notepad, for all you users of that other operating system). Vi is probably the oldest visual text editor around, but it is not the only one; others include Emacs and Pico for Unix, TextPad for Windows, and BBEdit for the Macintosh.
It would seem at first glance that the idea of a simple text editor is a pretty silly idea--after all, how much can you really do with just plain text without formatting or fonts or anything? But a good text editor does more than just edit files: syntax highlighting (coloring of special keywords and phrases for some programming language) and automatic indentation can have dramatic impact on productivity, and powerful text processing tools, the simplest being search and replace, can turn a long and repetitious session of editing into a matter of a few keystrokes.
And the value of plain text files themselves is not to be underestimated either. After all, even documents with the most complex formatting are, in their underlying form, nothing more than plain files that can be edited with a text editor (yes, a good text editor should be able to read binary files). And plain, readable text files form the backbone of much of the data your computer works with; view the source of any web page to see the proof. In particular, the Unix operating system runs based on configurations set up in numerous text files, such as the /etc/passwd file.
The above notwithstanding, there are a number of objective reasons (at least to me) why Vi is superior to that spawn of the devil.
- Emacs is based in Lisp. 'Nuff said.
- Vi's command mode is more intuitive. Sound strange? What kind of crazy text editor has a separate "command" mode? Nonetheless, think about it long enough and this design of Vi makes sense. Generally, editing text involves two different kinds of phases: writing the body of the text, and then doing formatting and processing. These correspond nicely to insert and command modes in Vi.
- Vi commands are a Unix standard. The less program uses a command set very similar to Vi. Same with sed. Regular expressions are implemented almost identical to grep (in fact, the name "grep" comes from a Vi command) as well.
- Cleaner interface. Only one line is used up for commands; everything else is your text. Easy to read. Good.
Emacs would be a great operating system, if only it came with a text editor.
Vim is a greatly improved version of the Vi standard, adding features such as fully configurable color syntax highlighting, multiple windows, and a nice GUI for multiple platforms. Vim is by far the most popular text editor among Linux users. It is excellent for programming in just about any language (there are syntax files for 341 languages) and also for just writing nice documents. I'm writing this HTML page in Vim; in fact, every page on this website has been either written or heavily modified using it.
A Word of Warning
One thing to keep in mind: once you use Vi/Vim on a regular basis, you will find that other word processors just don't cut it. You open up Microsoft Word, start typing your paper, and find yourself pressing Escape every few words. You try to save and type :w into your document. You type long strings of "jjjjj" when you're trying to scroll.
Yes, it will consume your life entirely. You will never be able to use another text editor again. Good for you.
Are you ready to be initiated? Begin the tutorial!