20.2 Splitting Windows
C-x 2
Split the selected window into two windows, one above the other
( split-window-below
).
C-x 3
Split the selected window into two windows, positioned side by side
( split-window-right
).
C-mouse-2
In the mode line of a window, split that window.
C-x 2
( split-window-below
) splits the selected window
into two windows, one above the other. After splitting, the selected
window is the upper one, and the newly split-off window is below.
Both windows have the same value of point as before, and display the
same portion of the buffer (or as close to it as possible). If
necessary, the windows are scrolled to keep point on-screen. By
default, the two windows each get half the height of the original
window. A positive numeric argument specifies how many lines to give
to the top window; a negative numeric argument specifies how many
lines to give to the bottom window.
If you change the variable split-window-keep-point
to
nil
, C-x 2
instead adjusts the portion of the buffer
displayed by the two windows, as well as the value of point in each
window, in order to keep the text on the screen as close as possible
to what it was before; furthermore, if point was in the lower half of
the original window, the bottom window is selected instead of the
upper one.
C-x 3
( split-window-right
) splits the selected window
into two side-by-side windows. The left window is the selected one;
the right window displays the same portion of the same buffer, and has
the same value of point. A positive numeric argument specifies how
many columns to give the left window; a negative numeric argument
specifies how many columns to give the right window.
When you split a window with C-x 3
, each resulting window
occupies less than the full width of the frame. If it becomes too
narrow, the buffer may be difficult to read if continuation lines are
in use (see Continuation Lines). Therefore, Emacs automatically
switches to line truncation if the window width becomes narrower than
50 columns. This truncation occurs regardless of the value of the
variable truncate-lines
(see Line Truncation); it is
instead controlled by the variable
truncate-partial-width-windows
. If the value of this variable
is a positive integer (the default is 50), that specifies the minimum
total width for a partial-width window before automatic line
truncation occurs; if the value is nil
, automatic line
truncation is disabled; and for any other non- nil
value, Emacs
truncates lines in every partial-width window regardless of its width.
The total width of a window is in column units as reported by
window-total-width
(see Window Sizes in The Emacs
Lisp Reference Manual), it includes the fringes, the continuation and
truncation glyphs, the margins, and the scroll bar.
On text terminals, side-by-side windows are separated by a vertical
divider which is drawn using the vertical-border
face.
If you click C-mouse-2
in the mode line of a window, that
splits the window, putting a vertical divider where you click.
Depending on how Emacs is compiled, you can also split a window by
clicking C-mouse-2
in the scroll bar, which puts a horizontal
divider where you click (this feature does not work when Emacs uses
GTK+ scroll bars).
By default, when you split a window, Emacs gives each of the
resulting windows dimensions that are an integral multiple of the
default font size of the frame. That might subdivide the screen
estate unevenly between the resulting windows. If you set the
variable window-resize-pixelwise
to a non- nil
value,
Emacs will give each window the same number of pixels (give or take
one pixel if the initial dimension was an odd number of pixels). Note
that when a frame’s pixel size is not a multiple of the frame’s
character size, at least one window may get resized pixelwise even if
this option is nil
.