2.8. Keyboard Habits
In this chapter we have
seen that bash provides command-line editing
with two modes: vi and
emacs. You may be wondering why these two
editors were chosen. The primary reason is because
vi and emacs are the most
widely used editors for UNIX. People who have used either editor will
find familiar editing facilities.
If you are not familiar with either of
these editors, you should seriously consider adopting emacs-mode
keyboard habits. Because it is based on control keys and
doesn't require you to think in terms of a
"command mode" and
"insert mode," you will find
emacs-mode easier to assimilate. Although the full
emacs is an extremely powerful editor, its
command structure lends itself very well to small subsetting: there
are several "mini-emacs" editors
floating around for UNIX, MS-DOS, and other systems.
The same cannot be said for
vi, because its command structure is really
meant for use in a full-screen editor. vi is
quite powerful too, in its way, but its power becomes evident only
when it is used for purposes similar to that for which it was
designed: editing source code in C and LISP. As mentioned earlier, a
vi user has the power to move mountains in few
keystrokes—but at the cost of being unable to do anything
meaningful in very few keystrokes. Unfortunately, the latter is most
desired in a command interpreter, especially nowadays when users are
spending more time within applications and less time working with the
shell. In short, if you don't already know
vi, you will probably find its commands obscure
and confusing.
Both
bash editing modes have quite a few commands;
you will undoubtedly develop keyboard habits that include just a few
of them. If you use emacs-mode and you aren't
familiar with the full emacs, here is a subset
that is easy to learn yet enables you to do just about anything:
For cursor motion around a command line, stick to CTRL-A and CTRL-E
for beginning and end of line, and CTRL-F and CTRL-B for moving
around. Delete using DEL (or whatever your
"erase" key is) and CTRL-D; as with
CTRL-F and CTRL-B, hold down to repeat if necessary. Use CTRL-K to
erase the entire line. Use CTRL-P and CTRL-N (or the up and down arrow keys) to move through
the command history. Use CTRL-R to search for a command you need to run again. Use TAB for filename completion.
After a few hours spent learning these keystrokes, you will wonder
how you ever got along without command-line editing.
|