19.2. Emacs Features: A Laundry List
Here's the list we
promised -- a list of our favorite features:
- Windows
-
Emacs is a "windowed editor."
Before anyone heard of the X Window System or the Macintosh, Emacs
had the ability to divide a terminal's screen into
several "windows," allowing you to
do different things in each one. You can edit a different file in
each window or read mail in one window, answer mail in another, issue
shell commands in a third, and so on.
Now that we all have nice workstations with mice and other crawly
things for navigating around a bitmapped screen, why do you care?
First, you may not have a bitmapped screen, and even if you have one
in the office, you may not at home. Second, I still find Emacs
preferable to most "modern" window
systems because I don't have
to use a mouse. If I want to create another window, I just type
CTRL-x 2 (which splits the current window, whatever it is, into two);
if I want to work in another window, I just type CTRL-x o; if I want
to delete a window, I type CTRL-x 0. Is this faster than reaching for
my mouse and moving it around? You bet. Particularly since my mouse
is hidden under a pile of paper. (Of course, it's
hidden because I hardly ever need it.) Once you've
created a window, it's just as easy to start editing
a new file, initiate a shell session, and so on. Third, even though
you're using a windowing system, you may not have a
lot of screen real estate available. By having a split Emacs screen,
all editing can be done in one window, leaving enough room for other
applications, such as the Mozilla web browser, to be open. Whether
you're developing web pages or just reading Slashdot
while "working,"
you'll appreciate the free space on the screen. It
isn't uncommon for Emacs users to always have Emacs
open on their desktops.
- Shells
-
You can start an interactive shell within
any Emacs window; just type ESC-x shell, and
you'll see your familiar shell prompt.
It's easy to see why this is so useful.
It's trivial to return to earlier comands, copy
them, and edit them. Even more important, you can easily take the
output of a command and copy it into a text file that
you're editing -- obviously an extremely useful
feature when you're writing a book like this. Emacs
also lets you issue commands that operate on the contents of a window
or a selected region within a window. Another benefit to doing shell
work directly in Emacs is that every word that appears in that shell
buffer is available for command
completions (Section 19.6). So if you're creating a
small shell script that has to reference a long directory name, being
able to autocomplete that name is an invaluable feature.
In fact, there are many filesystem maintenance tasks with which Emacs
can help you. You can view and manipulate
directories and files with
Dired
mode, which can be activated by typing ESC-x dired.
You'll be asked which directory you want to view
(the current directory is the default). Do you want to remove a file
that starts with a hyphen, but rm complains that
your file is not a valid option? Start Emacs in Dired mode, select
the file, and type D. Emacs will ask you for
confirmation about the proposed deletion. Want to
delete a bunch of
files that can't be easily described with wildcards?
In dired mode, select each file with d, then
remove them all with ESC-x
dired-do-flagged-delete.
- Keyboard macros and advanced editing features
-
Emacs
lets you define "keyboard
macros" -- and sequences of
commands
that can be executed automatically. This is similar to vi's map (Section 18.2) facility, with one extra twist: Emacs
actually executes the commands while you're defining
the macro; vi expects you to figure out what you
need to do, type it in without any feedback, and hope that the macro
doesn't do anything hostile when you edit it. With
Emacs, it's much easier to get the macro right. You
can see what it's going to do as
you're defining it, and if you make a mistake, you
can correct it immediately.
To create a macro, you first need to tell Emacs that it needs to
remember the next sequence of keystrokes by typing
CTRL-x (. Now perform the desired
actions. To end the macro recording, type CTRL-x ). To execute the
most recently defined macro, type CTRL-x e. If you make a mistake
when recording the marco, type CTRL-g to cancel out
of the entire operation, and begin recording the macro again.
Even if you don't create your own macros, Emacs
provides a rich set of
text- editing features that often
do what you mean. For instance, Emacs allows
users to make rectangluar text cuts. This is very useful for removing
leading whitespace from a series of lines. To
make the cut, you must first define the starting point of the
rectangle to be cut. Position the cursor in Emacs to the upper-left
corner of the area to be excised. Then mark the area with CTRL-SPACE.
Move the cursor down to the last line of the area to be removed and
then over to right as far as is desired. This is the lowest and
rightmost corner of the rectangle. Now remove the area with the key
sequence CTRL-x r k.
- Editing modes
-
Emacs has a large number of special
editing modes that provide context-sensitive
help while you're writing. For example, if
you're writing a C program, the C mode will help you to
observe conventions for indentation and commenting. It automatically
lines up braces for you and tells you when parentheses are
unbalanced. In X Windows, Emacs will even do syntax highlighting for
you. Perl programmers get
two editing modes to choose from, perl-mode and cperl-mode. Based on
the file extension, Emacs will figure out which mode you want. (The
default and simplest mode is called Fundamental.) You can enter a new
mode by typing ESC- x and then the name of the mode. Emacs also
integrates well with the perl
debugger (ESC-x
perldb) so that you can step through your running
code in the editor. Emacs also supports many
version-control systems including RCS and
CVS. Checking out a file from RCS is as simple as typing CTRL-x v v.
After you have made your edits, check in the file with CTRL-x v v.
That's not a typo; Emacs can figure out the
right thing to do with your file because it
remembers the last version-control state. Pretty cool. There are
special modes for virtually every programming language
I've ever heard of. There are also special modes for
HTML, troff, TEX, outlines,
stick figures, etc. For any kind of programming, Emacs is the
Integrated Development Environment of choice for many users.
- Mail, news, FTP, and HTTP
-
Although I often use
Emacs' mail facility as an example,
I'm not personally fond of it. However, if you
really like working within the Emacs environment, you should try it.
Sending mail from Emacs (ESC-x mail) is convenient
if you are already editing the file you wish to send. You can simply
copy and paste your work into the mail buffer and send it along with
CTRL-c CTRL-c. You can even add Cc: and Reply-to: fields to the
message just by adding them to the mail buffer directly under the To:
field.
Emacs also has a Usenet client called GNUS (ESC-x
gnus) that has quite a following. What editor
would be complete without an integrated
FTP client?
Certainly not Emacs. There are two ways to access FTP in Emacs. The
first is to type ESC-x ftp. This gives you a
shell-like ftp client. While this is nice, Emacs provides an even
slicker way to FTP files. Ange-ftp mode allows Emacs users to open
remote files almost as if they were
local. To open a remote file or directory, simple type CTRL-x CTRL-f.
However, you must specify the filename with a leading slash and your
remote username followed by @ and followed again
by the ftp hostname, a colon, and the full path you wish to retrieve.
For example, if I wished to edit the file
index.html as user edit on my
web server, I would use the filename
/edit@www.nowhere.com:/home/html/htdocs/index.html.
To extend the last example a bit, Emacs even has a
web-browser mode so that you could look
at the web page you just edited! In truth, lynx is still king of the
ASCII web browsers, but the Emacs W3 mode is coming along. It
doesn't normally come with Emacs, so
you're going to have to look on the Web for it. It
has very good integration with XEmacs (neè Lucent Emacs) and
can even display images. Speaking of the Web,
there's a nice Emacs feature called
webjump (ESC-x webjumb)
that will make a currently opened Web browser such as Netscape go to
a new URL. Webjump comes with a list a predefined URLs, which can be
expanded, of course. One of those URLs is Yahoo. When that site is
selected, webjump will ask you for a query term to submit. After
hitting return, the Yahoo search results will appear in a browser
window. Again, it's a nice shortcut.
- Customization
-
Emacs is the most customizable
tool I've ever seen. Customization is based on the
LISP programming language, so you need to learn some LISP before you
can work with it much. However, once you know LISP, you can do
virtually anything. For example, you could write a complete
spreadsheet program within Emacs -- which means that you could use
your normal Emacs commands to edit the spreadsheet and incorporate it
(in whole or in part) into your documents. In fact, several Emacs
spreadsheet modes exist, but their quality and functionality vary
wildly. And, because of the FSF's General Public
License, virtually all special-purpose packages are available for
free.
--ML and JJ
| | | 19. GNU Emacs | | 19.3. Customizations and How to Avoid Them |
Copyright © 2003 O'Reilly & Associates. All rights reserved.
|
|