Go to the previous, next chapter.
This chapter describes the Emacs commands that add, remove, or
- TAB Indent current line
``appropriately'' in a mode-dependent fashion. LFD
Perform RET followed by TAB (
Merge two lines (
This would cancel out the effect of LFD. C-M-o
Split line at point; text on the line after point becomes a new line
indented to the same column that it now starts in (
Move (forward or back) to the first nonblank character on the current
Indent several lines to same column (
region). C-x TAB
Shift block of lines rigidly right or left (
Indent from point to
the next prespecified tab stop column (
indent-relative Indent from point to under an indentation point in the previous
Most programming languages have some indentation convention. For Lisp
code, lines are indented according to their nesting in
parentheses. The same general idea is used for C code, though
many details are different.
Whatever the language, to indent a line, use the TAB command. Each major mode defines
this command to perform the
sort of indentation
appropriate for the particular language. In Lisp mode, TAB
aligns the line according to its depth in parentheses. No matter
where in the line you are when you type TAB, it aligns
the line as a whole. In C mode, TAB implements a
subtle and sophisticated indentation
style that knows about many aspects of C syntax.
In Text mode, TAB
runs the command
which indents to the next tab stop column. You can set the tab
stops with M-x edit-tab-stops.
- Indentation Commands:
Various commands and techniques for indentation.
- Tab Stops: You can set
arbitrary "tab stops" and then indent to the
next tab stop when you want to.
- Just Spaces: You can
request indentation using just spaces.
To move over the indentation
on a line, do M-m (
indentation). This command, given anywhere on a
line, positions point at the
first nonblank character on
To insert an indented line before the current line, do C-a
C-o TAB. To make an indented line after the current line,
use C-e LFD.
If you just want to insert a tab character in the buffer, you can type C-q TAB.
split-line) moves the text from point to the end of the line
vertically down, so that the current line becomes two lines. C-M-o
first moves point forward
over any spaces and tabs. Then it inserts after point a newline and enough indentation to reach the same
column point is on. Point remains before the
inserted newline; in this
regard, C-M-o resembles C-o.
To join two lines cleanly, use the M-^ (
indentation) command. It deletes the indentation at the front of the
current line, and the line boundary as well, replacing them with
a single space. As a special case (useful for Lisp code) the
single space is omitted if the characters to be joined are
consecutive open parentheses or closing parentheses, or if the
junction follows another newline.
To delete just the indentation
of a line, go to the beginning of the line and use M-\
delete-horizontal-space), which deletes all spaces
and tabs around the cursor.
If you have a fill prefix, M-^ deletes the fill
prefix if it appears after the newline
that is deleted. See section The
There are also commands for changing the indentation of several lines at
once. C-M-\ (
region) applies to
all the lines that begin in the region;
it indents each line in the ``usual'' way, as if you had typed TAB
at the beginning of the line. A numeric argument specifies the
column to indent to, and each line is shifted left or right so
that its first nonblank character
appears in that column. C-x TAB (
moves all of the lines in the region
right by its argument (left, for negative arguments). The whole
group of lines moves rigidly sideways, which is how the command gets its name.
M-x indent-relative indents at point based on the previous line
(actually, the last nonempty line). It inserts whitespace at point, moving point, until it is underneath an indentation point in the previous line. An indentation point is the end of a sequence
of whitespace or the end of
the line. If point is farther
right than any indentation point in the previous line, the whitespace before point is deleted and the first indentation point then applicable is used.
If no indentation point is applicable even then,
tab-to-tab-stop (see section Tab Stops).
indent-relative is the definition of TAB
in Indented Text mode. See
section Commands for Human
See section Indentation in
Formatted Text, for another way of specifying the indentation for part of your text.
For typing in tables, you can use Text mode's definition of TAB,
This command inserts indentation before point, enough to reach the next
tab stop column. If you are not in Text mode, this command can be found on the key M-i.
You can specify the tab stops used by M-i. They are
stored in a variable called
list, as a list of column-numbers in
The convenient way to set the tab stops is with M-x
edit-tab-stops, which creates and selects a buffer containing a description
of the tab stop settings. You can edit this buffer to specify different tab
stops, and then type C-c C-c to make those new tab
stops take effect. In the tab stop buffer, C-c
C-c runs the function
rather than its usual definition
records which buffer was
current when you invoked it, and stores the tab stops back in
that buffer; normally all
buffers share the same tab stops and changing them in one buffer affects all, but if you
happen to make
list local in one buffer then
in that buffer will edit the local settings.
Here is what the text
representing the tab stops looks like for ordinary tab stops
every eight columns.
: : : : : :
0 1 2 3 4
To install changes, type C-c C-c
The first line contains a colon at each tab stop. The
remaining lines are present just to help you see where the colons
are and know what to do.
Note that the tab stops that control
have nothing to do with displaying tab characters in the buffer. See section Variables Controlling Display, for
more information on that.
Emacs normally uses both tabs and spaces to indent lines. If
you prefer, all indentation
can be made from spaces only. To request this, set
nil. This is a per-buffer variable; altering the variable affects only the
current buffer, but there is a
default value which you can change as well. See section Local Variables.
There are also commands to convert tabs to spaces or vice
versa, always preserving the columns of all nonblank text. M-x tabify
scans the region for
sequences of spaces, and converts sequences of at least three
spaces to tabs if that can be done without changing indentation. M-x untabify
changes all tabs in the region
to appropriate numbers of spaces.
To return to the Ready-to-Run Software Super ReadyPak Table of
Contents please press here.