20.1 Creating and Selecting Buffers

C-x b buffer RET

Select or create a buffer named buffer (switch-to-buffer).

C-x 4 b buffer RET

Similar, but select buffer in another window (switch-to-buffer-other-window).

C-x 5 b buffer RET

Similar, but select buffer in a separate frame (switch-to-buffer-other-frame).


Select the previous buffer in the buffer list (previous-buffer).


Select the next buffer in the buffer list (next-buffer).

C-u M-g M-g
C-u M-g g

Read a number n and move to line n in the most recently selected buffer other than the current buffer, in another window.

The C-x b (switch-to-buffer) command reads a buffer name using the minibuffer. Then it makes that buffer current, and displays it in the currently-selected window. An empty input specifies the buffer that was current most recently among those not now displayed in any window.

While entering the buffer name, you can use the usual completion and history commands (see The Minibuffer). Note that C-x b, and related commands, use permissive completion with confirmation for minibuffer completion: if you type RET when the minibuffer text names a nonexistent buffer, Emacs prints ‘[Confirm]’ and you must type a second RET to submit that buffer name. See Completion Exit, for details. For other completion options and features, see Completion Options.

If you specify a buffer that does not exist, C-x b creates a new, empty buffer that is not visiting any file, and selects it for editing. The default value of the variable major-mode determines the new buffer’s major mode; the default value is Fundamental mode. See Major Modes. One reason to create a new buffer is to use it for making temporary notes. If you try to save it, Emacs asks for the file name to use, and the buffer’s major mode is re-established taking that file name into account (see Choosing File Modes).

For conveniently switching between a few buffers, use the commands C-x LEFT and C-x RIGHT. C-x LEFT (previous-buffer) selects the previous buffer (following the order of most recent selection in the current frame), while C-x RIGHT (next-buffer) moves through buffers in the reverse direction. Both commands support a numeric prefix argument that serves as a repeat count.

To select a buffer in a window other than the current one (see Multiple Windows), type C-x 4 b (switch-to-buffer-other-window). This prompts for a buffer name using the minibuffer, displays that buffer in another window, and selects that window.

Similarly, C-x 5 b (switch-to-buffer-other-frame) prompts for a buffer name, displays that buffer in another frame (see Frames and Graphical Displays), and selects that frame. If the buffer is already being shown in a window on another frame, Emacs selects that window and frame instead of creating a new frame.

See Displaying a Buffer in a Window, for how the C-x 4 b and C-x 5 b commands get the window and/or frame to display in.

In addition, C-x C-f, and any other command for visiting a file, can also be used to switch to an existing file-visiting buffer. See Visiting Files.

C-u M-g M-g, that is goto-line with a plain prefix argument, reads a number n using the minibuffer, selects the most recently selected buffer other than the current buffer in another window, and then moves point to the beginning of line number n in that buffer. This is mainly useful in a buffer that refers to line numbers in another buffer: if point is on or just after a number, goto-line uses that number as the default for n. Note that prefix arguments other than just C-u behave differently. C-u 4 M-g M-g goes to line 4 in the current buffer, without reading a number from the minibuffer. (Remember that M-g M-g without prefix argument reads a number n and then moves to line number n in the current buffer. See Changing the Location of Point.)

Emacs uses buffer names that start with a space for internal purposes. It treats these buffers specially in minor ways—for example, by default they do not record undo information. It is best to avoid using such buffer names yourself.