31.4.2 Moving in the Parenthesis Structure
The Emacs commands for handling parenthetical groupings see nothing
except parentheses (or whatever characters must balance in the
language you are working with), and the escape characters that might
be used to quote those. They are mainly intended for editing
programs, but can be useful for editing any text that has parentheses.
They are sometimes called “list” commands because in Lisp these
groupings are lists.
- C-M-n
- Move forward over a parenthetical group (
forward-list
).
- C-M-p
- Move backward over a parenthetical group (
backward-list
).
- C-M-u
- Move up in parenthesis structure (
backward-up-list
).
- C-M-d
- Move down in parenthesis structure (
down-list
).
The “list” commands C-M-n (forward-list
) and
C-M-p (backward-list
) move over one (or n)
parenthetical groupings, skipping blithely over any amount of text
that doesn't include meaningful parentheses (symbols, strings, etc.).
C-M-n and C-M-p try to stay at the same level in the
parenthesis structure. To move up one (or n) levels, use
C-M-u (backward-up-list
). C-M-u moves backward up
past one unmatched opening delimiter. A positive argument serves as a
repeat count; a negative argument reverses the direction of motion, so
that the command moves forward and up one or more levels.
To move down in the parenthesis structure, use C-M-d
(down-list
). In Lisp mode, where ‘(’ is the only opening
delimiter, this is nearly the same as searching for a ‘(’. An
argument specifies the number of levels to go down.