Rnet
Rnet

Reputation: 5040

Vim close window without closing buffer

How do I close a window or unsplit without deleting the buffer?

Upvotes: 55

Views: 36659

Answers (3)

Joel.O
Joel.O

Reputation: 2074

A window is a viewport on a buffer. In vim to manage windows it is CTRL+w the leading command, that you can follow with several options (in bold those that answer to your question):

CTRL+w, v: Opens a new vertical split

CTRL+w, s: Opens a new horizontal split

CTRL+w, c: Closes a window but keeps the buffer

CTRL+w, o: Closes other windows, keeps the active window only

CTRL+w, right arrow: Moves the cursor to the window on the right

CTRL+w, r: Moves the current window to the right

CTRL+w, =: Makes all splits equal size

Then, you need to switch the buffers in the windows:

:ls lists all opened buffers

:b5 switches to your 5th buffer

Finally, to open all buffers in a vertical split, use: :vertical sball. Very useful when you open multiple files as buffers after a grep:

grep -rno --exclude-dir={dir1,dir2,dir3} "searchterm" *
vim $(!! -l)

For more info, see the doc: vimdoc.sourceforge.net

Upvotes: 106

Ingo Karkat
Ingo Karkat

Reputation: 172738

If you want to edit another buffer in the window, just use :edit / :buf. The current buffer will be replaced, and remains in the buffer list (i.e. it shows up in :ls).

If you want to close the windows split, use :close. The :quit command will work, too, but has the side effect of closing Vim when this is the last window.

In order to leave buffers that have changes, you need

:set hidden

If you know how Vim deals with buffers, this is a recommended option that many users have set.

Upvotes: 32

Amadan
Amadan

Reputation: 198476

Vim windows are closed using :q.

However, if you don't have another window open, it will exit from Vim. If you do have another window to switch to, only the current window is closed, and buffer remains open. You may need to set hidden.

To close a buffer, you would need to do :bdelete.

You can check if your buffer is open or not by using :buffers.

Upvotes: 7

Related Questions