Working with vi
The editor found on nearly every UNIX and Linux system is, without a doubt, the vi editor, originally written by Bill Joy. This simple-to-use but incredibly capable editor features a somewhat cryptic command set, but you can put it to use with only a few commands. Although more experienced UNIX and Linux users continue to use vi extensively during computing sessions, many newer users might prefer learning an easier-to-use text editor such as pico or GNU nano. Diehard GNU fans and programmers definitely use emacs.
That said, learning how to use vi is a good idea. You might need to edit files on a Linux system with a minimal install, or a remote server without a more extensive offering of installed text editors. Chances are better than good that vi will be available.
You can start an editing session by using the vi command like this:
$ vi file.txt
The vi command works by using an insert (or editing) mode, and a viewing (or command) mode.
When you first start editing, you are in the viewing mode. You can use your cursor or other navigation keys (as shown later) to scroll through the text. To start editing, press the i key to insert text or the a key to append text. When finished, use the Esc key to toggle out of the insert or append modes and into the viewing (or command) mode. To enter a command, type a colon (:), followed by the command, such as w to write the file, and press Enter.
Although vi supports many complex editing operations and numerous commands, you can accomplish work by using a few basic commands. These basic vi commands are the following:
► Cursor movement — h, j, k, l (left, down, up, and right)
► Delete character — x
► Delete line — dd
► Mode toggle — Esc, Insert (or i)
► Quit — :q
► Quit without saving — :q!
► Run a shell command — :sh (use 'exit' to return)
► Save file — :w
► Text search — /
Use the vimtutor command to quickly learn how to use vi's keyboard commands. The tutorial takes less than 30 minutes, and it teaches new users how to start or stop the editor; navigate files; insert and delete text; and perform search, replace, and insert operations.
Working with emacs
Richard M. Stallman's GNU emacs editor, like vi, is included with Linux and nearly every other Linux distribution. Unlike other UNIX and Linux text editors, emacs is much more than a simple text editor — it is an editing environment and can be used to compile and build programs, act as an electronic diary, appointment book and calendar, compose and send electronic mail, read Usenet news, and even play games. The reason for this capability is that emacs contains a built-in language interpreter that uses the Elisp (emacs LISP) programming language.
The GNU version of this editor requires more than 30MB of hard drive space. However, there are versions with fewer resource requirements, and at least one other text editor included with Linux, named joe, can be used as an emacs clone (albeit with fewer features).
You can start an emacs editing session like this:
$ emacs file.txt
If you start emacs when using X11, the editor launches in its own floating window. To force emacs to display inside a terminal window rather than its own window (which can be useful if the window is a login at a remote computer), use the -nw command-line option like this:emacs -nw file.txt.
The emacs editor uses an extensive set of keystroke and named commands, but you can work with it by using a basic command subset. Many of these basic commands require you to hold down the Ctrl key, or to first press a meta key (generally mapped to the Alt key). The basic commands are listed in Table 4.2.
TABLE 4.2 Emacs Editing Commands
| Action | Command |
|---|---|
| Abort | Ctrl+G |
| Cursor left | Ctrl+B |
| Cursor down | Ctrl+N |
| Cursor right | Ctrl+F |
| Cursor up | Ctrl+P |
| Delete character | Ctrl+D |
| Delete line | Ctrl+K |
| Go to start of line | Ctrl+A |
| Go to end of line | Ctrl+E |
| Help | Ctrl+H |
| Quit | Ctrl+X, Ctrl+C |
| Save As | Ctrl+X, Ctrl+W |
| Save file | Ctrl+X, Ctrl+S |
| Search backward | Ctrl+R |
| Search forward | Ctrl+S |
| Start tutorial | Ctrl+H, T |
| Undo | Ctrl+X, U |
One of the best reasons to learn how to use emacs is that you can use nearly all the same keystrokes to edit commands on the bash shell command line. Another reason is that like vi, emacs is universally available on nearly every UNIX and Linux system, including Apple's Mac OS X.