Next: Erasing, Previous: Inserting Text, Up: Basic
To do more than insert characters, you have to know how to move point (see Point). The keyboard commands C-f, C-b, C-n, and C-p move point to the right, left, down, and up, respectively. You can also move point using the arrow keys present on most keyboards: <RIGHT>, <LEFT>, <DOWN>, and <UP>; however, many Emacs users find that it is slower to use the arrow keys than the control keys, because you need to move your hand to the area of the keyboard where those keys are located.
You can also click the left mouse button to move point to the position clicked. Emacs also provides a variety of additional keyboard commands that move point in more sophisticated ways.
forward-char
).
right-char
) behaves like C-f, with one
exception: when editing right-to-left scripts such as Arabic, it
instead moves backward if the current paragraph is a
right-to-left paragraph. See Bidirectional Editing. If
visual-order-cursor-movement
is non-nil
, this command
moves to the character that is to the right of the current screen
position, moving to the next or previous screen line as appropriate.
Note that this might potentially move point many buffer positions
away, depending on the surrounding bidirectional context.
backward-char
).
left-char
) behaves like C-b, except it
moves forward if the current paragraph is right-to-left.
See Bidirectional Editing. If visual-order-cursor-movement
is non-nil
, this command moves to the character that is to the
left of the current screen position, moving to the previous or next
screen line as appropriate.
next-line
). This command attempts
to keep the horizontal position unchanged, so if you start in the
middle of one line, you move to the middle of the next.
previous-line
). This command
preserves position within the line, like C-n.
move-beginning-of-line
).
move-end-of-line
).
forward-word
).
right-word
) behaves like M-f, except it
moves backward by one word if the current paragraph is
right-to-left. See Bidirectional Editing.
backward-word
).
left-word
) behaves like M-b, except it
moves forward by one word if the current paragraph is
right-to-left. See Bidirectional Editing.
move-to-window-line-top-bottom
).
A numeric argument says which screen line to place point on, counting
downward from the top of the window (zero means the top line). A
negative argument counts lines up from the bottom (−1 means the
bottom line). See Arguments, for more information on numeric
arguments.
beginning-of-buffer
). With
numeric argument n, move to n/10 of the way from the top.
end-of-buffer
).
scroll-up-command
). See Scrolling.
scroll-down-command
). See Scrolling.
goto-line
). Line 1 is the beginning of the buffer. If
point is on or just after a number in the buffer, that is the default
for n. Just type <RET> in the minibuffer to use it. You can
also specify n by giving M-g M-g a numeric prefix argument.
See Select Buffer, for the behavior of M-g M-g when you give it
a plain prefix argument.
set-goal-column
). When a
semipermanent goal column is in effect, those commands always try to
move to this column, or as close as possible to it, after moving
vertically. The goal column remains in effect until canceled.
When a line of text in the buffer is longer than the width of the
window, Emacs usually displays it on two or more screen lines.
For convenience, C-n and C-p move point by screen lines,
as do the equivalent keys <down> and <up>. You
can force these commands to move according to logical lines
(i.e., according to the text lines in the buffer) by setting the
variable line-move-visual
to nil
; if a logical line
occupies multiple screen lines, the cursor then skips over the
additional screen lines. For details, see Continuation Lines.
See Variables, for how to set variables such as
line-move-visual
.
Unlike C-n and C-p, most of the Emacs commands that work
on lines work on logical lines. For instance, C-a
(move-beginning-of-line
) and C-e
(move-end-of-line
) respectively move to the beginning and end
of the logical line. Whenever we encounter commands that work on
screen lines, such as C-n and C-p, we will point these
out.
When line-move-visual
is nil
, you can also set the
variable track-eol
to a non-nil
value. Then C-n
and C-p, when starting at the end of the logical line, move to
the end of the next logical line. Normally, track-eol
is
nil
.
C-n normally stops at the end of the buffer when you use it on
the last line in the buffer. However, if you set the variable
next-line-add-newlines
to a non-nil
value, C-n on
the last line of a buffer creates an additional line at the end and
moves down into it.