Next: Recentering, Up: Display
If a window is too small to display all the text in its buffer, it displays only a portion of it. Scrolling commands change which portion of the buffer is displayed.
Scrolling “forward” or “up” advances the portion of the buffer displayed in the window; equivalently, it moves the buffer text upwards relative to the window. Scrolling “backward” or “down” displays an earlier portion of the buffer, and moves the text downwards relative to the window.
In Emacs, scrolling “up” or “down” refers to the direction that the text moves in the window, not the direction that the window moves relative to the text. This terminology was adopted by Emacs before the modern meaning of “scrolling up” and “scrolling down” became widespread. Hence, the strange result that <PageDown> scrolls “up” in the Emacs sense.
The portion of a buffer displayed in a window always contains point. If you move point past the bottom or top of the window, scrolling occurs automatically to bring it back onscreen (see Auto Scrolling). You can also scroll explicitly with these commands:
scroll-up-command
).
scroll-down-command
).
C-v (scroll-up-command
) scrolls forward by nearly the
whole window height. The effect is to take the two lines at the
bottom of the window and put them at the top, followed by lines that
were not previously visible. If point was in the text that scrolled
off the top, it ends up on the window's new topmost line. The
<next> (or <PageDown>) key is equivalent to C-v.
M-v (scroll-down-command
) scrolls backward in a similar
way. The <prior> (or <PageUp>) key is equivalent to
M-v.
The number of lines of overlap left by these scroll commands is
controlled by the variable next-screen-context-lines
, whose
default value is 2. You can supply the commands with a numeric prefix
argument, n, to scroll by n lines; Emacs attempts to leave
point unchanged, so that the text and point move up or down together.
C-v with a negative argument is like M-v and vice versa.
By default, these commands signal an error (by beeping or flashing
the screen) if no more scrolling is possible, because the window has
reached the beginning or end of the buffer. If you change the
variable scroll-error-top-bottom
to t
, the command moves
point to the farthest possible position. If point is already there,
the command signals an error.
Some users like scroll commands to keep point at the same screen
position, so that scrolling back to the same screen conveniently
returns point to its original position. You can enable this behavior
via the variable scroll-preserve-screen-position
. If the value
is t
, Emacs adjusts point to keep the cursor at the same screen
position whenever a scroll command moves it off-window, rather than
moving it to the topmost or bottommost line. With any other
non-nil
value, Emacs adjusts point this way even if the scroll
command leaves point in the window. This variable affects all the
scroll commands documented in this section, as well as scrolling with
the mouse wheel (see Mouse Commands); in general, it affects any
command that has a non-nil
scroll-command
property.
See Property Lists.
The commands M-x scroll-up and M-x scroll-down behave
similarly to scroll-up-command
and scroll-down-command
,
except they do not obey scroll-error-top-bottom
. Prior to
Emacs 24, these were the default commands for scrolling up and down.
The commands M-x scroll-up-line and M-x scroll-down-line
scroll the current window by one line at a time. If you intend to use
any of these commands, you might want to give them key bindings
(see Init Rebinding).