Getting Started with Emacs

Emacs is the text editor with everything. Learn the basics—maybe you'll even want to keep your calendar on it.

Minor Modes

Add-ons, called minor modes, supplement major modes. Most
minor modes operate regardless of the major mode, so they can
operate in different documents. For example, Show Paren mode
matches parentheses for you. It is useful for the C programmer even
in Text mode, and it's a godsend to the Lisp programmer.

Minor modes can be turned on and off as you wish. For
example, when programming, Auto Fill mode (for filling, or line
wrapping, paragraphs) is useful in comments, but a nuisance outside
of them.

Some minor modes are global; they extend across all buffers
when they are active. Others are local to a buffer. To activate a
given mode, append -mode to its name and execute
that command. So to activate Parentheses mode, press M-X then type
show-paren-mode. To deactivate it, run the
command again.

Several useful buffer-local minor modes are Abbrev mode
(autocorrection on the fly), Auto Save mode, Font-Lock mode (color
highlighting), Flyspell mode (spell checking on the fly) and
Overwrite mode. Two useful minor modes that apply to all buffers
are Line Number mode and Column Number mode. These print the
current position of point in the mode line, usually over to the
right.

Another useful mode is Ispell, which lets you spell check
your buffer. It has special submodes for checking e-mail messages,
programming language comments and strings, and other special
uses.

Your .emacs File

Key to customizing Emacs is the initialization file,
~/.emacs. Administrators usually provide a global init file. If you
don't like it you can tell Emacs to ignore it in your own init
file. And, you can start Emacs with no init file with
emacs -q, useful for debugging. The init file is
nothing but some elisp used to set up Emacs the way you (or your
administrator) like it (Figure 6).

Figure 6. Editing the author's .emacs, an example of Emacs Lisp, in
Emacs.

You also can set variables in the init file. I customize HTML
Helper mode by setting some mode variables:

Keystrokes and key sequences also can be bound to functions. This
allows you to use the key sequence to activate the function. For
example, having written the function insert-date, I can bind it to
the F3 function key with this line:

(global-set-key [f3] 'insert-date)

You also can use this capability to remap your keyboard. If you
don't like some of the long key sequences in Emacs, you can rebind
them.

The other way to customize Emacs is with the Customize menu,
accessed with M-X customize or from the Options
pull-down menu. This extensive menu system allows users to change
variables and store the changes in your init file.

Emacs as a Server

A number of programs, such as crontab and mutt, invoke an
external program as their editor. To let them run Emacs, set Emacs
up to run as a server by putting this line into your .emacs
file:

(server-start)

Next, set the environment variable EDITOR or VISUAL to
emacsclient. In Bash, add this to your /etc/bashrc or your
~/x.bash_profile:

export VISUAL=emacsclient

Now, when you execute crontab -e or edit a
message in mutt, you edit in your existing Emacs session instead of
waiting for a new Emacs to start up. To finish editing and make
emacslient exit, end your session in that buffer with Ctrl-C #
instead of Ctrl-X K.

For emacsclient to work, Emacs must be running when the
external program invokes it. This is consistent with the preferred
way of using Emacs, which is to start Emacs when you log in and
leave it running until you log out. One result of using emacsclient
is you only have one instance of Emacs running at any one time.
While memory is cheap today, it wasn't always so. And even today,
if you want to run Linux on your laptop or elderly computers,
conserving memory is always a good idea.

You might want to have Emacs edit your mail in Mail mode. If
you use mutt, add this to your .emacs file:

Of course, to comply with the RFCs on netiquette, you will
want Auto Fill mode active when you edit mail. Most major modes
have a hook they execute on entering the mode and another they
execute on leaving. Here is how to get Mail mode to invoke Auto
Fill mode:

When you are done writing your e-mail, if you want to annoy the
NSA, use Spook. To protest the Communications Decency Act (a decent
thing to do) and annoy a lot of American politicians, see Bruce.

Finally, before we take our leave of this wild and woolly
editor, let me bring the etc directory (in the Emacs directory
tree) to your attention. It contains a number of useful documents,
such as an Emacs English language reference card, in source
(refcard.tex) and postscript (refcard.ps) form. Translations of the
reference card into other languages are available. There is also
some background material on Emacs and the GNU Project and a copy of
the GPL.

Something you rarely find in proprietary software (at least,
not deliberately) is present in Emacs: humor. Check out the bug
report from the year 2199, the word list for Spook mode, some
explanations of what Emacs stands for and more. And if you really
want to exercise your font server, visit the file “HELLO”.

Trending Topics

Webinar: 8 Signs You’re Beyond Cron

Scheduling Crontabs With an Enterprise Scheduler
11am CDT, April 29th

Join Linux Journal and Pat Cameron, Director of Automation Technology at HelpSystems, as they discuss the eight primary advantages of moving beyond cron job scheduling. In this webinar, you’ll learn about integrating cron with an enterprise scheduler.