Cancel split window in Vim

VimSplitWindow

Vim Problem Overview


I have split my windows horizontally. Now how can I return to normal mode, i.e. no split window just one window without cancelling all of my open windows. I have 5 and do not want to "quit", just want to get out of split window.

Vim Solutions


Solution 1 - Vim

Press Control+w, then hit q to close each window at a time.

Update: Also consider eckes answer which may be more useful to you, involving :on (read below) if you don't want to do it one window at a time.

Solution 2 - Vim

To close all splits, I usually place the cursor in the window that shall be the on-ly visible one and then do :on which makes the current window the on-ly visible window. Nice mnemonic to remember.


Edit: :help :on showed me that these commands are the same:

  • :on
  • :only
  • CTRL-w CTRL-o
  • And yes, also CTRL-W o has the same effect (as Nathan answered).

Each of these four closes all windows except the active one.

Solution 3 - Vim

to close all windows but the current one use:

CTRL+w, o

That is, first CTRL+w and then o.

Solution 4 - Vim

Two alternatives for closing the current window are ZZ and ZQ, which will, respectively, save and not save changes to the displayed buffer.

Solution 5 - Vim

From :help opening-window (search for "Closing a window" - /Closing a window)

  • :q[uit] close the current window and buffer. If it is the last window it will also exit vim
  • :bd[elete] unload the current buffer and close the current window
  • :qa[all] or :quita[ll] will close all buffers and windows and exit vim (:qa! to force without saving changes)
  • :clo[se] close the current window but keep the buffer open. If there is only one window this command fails
  • :hid[e] hide the buffer in the current window (Read more at :help hidden)
  • :on[ly] close all other windows but leave all buffers open

Solution 6 - Vim

The command :hide will hide the currently focused window. I think this is the functionality you are looking for.

In order to navigate between windows type Ctrl+w followed by a navigation key (h,j,k,l, or arrow keys)

For more information run :help window and :help hide in vim.

Solution 7 - Vim

I found that ctrl + w to the window you want to close, then just do :q. This works for me.

Solution 8 - Vim

I understand you intention well, I use buffers exclusively too, and occasionally do split if needed.

below is excerpt of my .vimrc

" disable macro, since not used in 90+% use cases
map q <Nop>
" q,  close/hide current window, or quit vim if no other window
nnoremap q :if winnr('$') > 1 \|hide\|else\|silent! exec 'q'\|endif<CR>
" qo, close all other window    -- 'o' stands for 'only'
nnoremap qo :only<CR>
set hidden
set timeout
set timeoutlen=200   " let vim wait less for your typing!

Which fits my workflow quite well

> If q was pressed > > - hide current window if multiple window open, else try to quit vim. > > if qo was pressed, > > - close all other window, no effect if only one window.

Of course, you can wrap that messy part into a function, eg

func! Hide_cur_window_or_quit_vim()
    if winnr('$') > 1
        hide
    else
        silent! exec 'q'
    endif
endfunc
nnoremap q :call Hide_cur_window_or_quit_vim()<CR>

Sidenote: I remap q, since I do not use macro for editing, instead use :s, :g, :v, and external text processing command if needed, eg, :'{,'}!awk 'some_programm', or use :norm! normal-command-here.

Solution 9 - Vim

Just like the others said before the way to do this is to press ctrl+w and then o. This will "maximize" the current window, while closing the others. If you'd like to be able to "unmaximize" it, there's a plugin called ZoomWin for that. Otherwise you'd have to recreate the window setup from scratch.

Solution 10 - Vim

Okay I just detached and reattach to the screen session and I am back to normal screen I wanted

Solution 11 - Vim

Provide the window number to close a specific window without leaving the current one:

:[N]close
:close[N]
:[N]quit
:quit[N]
Ctrl-W[N]c

The window number can be displayed in the status line by the following settings:

:set statusline+=%{tabpagewinnr(tabpagenr())}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSudeepView Question on Stackoverflow
Solution 1 - VimWarren PView Answer on Stackoverflow
Solution 2 - VimeckesView Answer on Stackoverflow
Solution 3 - VimNathan FellmanView Answer on Stackoverflow
Solution 4 - VimBenoitView Answer on Stackoverflow
Solution 5 - VimchaptuckView Answer on Stackoverflow
Solution 6 - VimcledouxView Answer on Stackoverflow
Solution 7 - VimdmargesView Answer on Stackoverflow
Solution 8 - VimqeatzyView Answer on Stackoverflow
Solution 9 - VimpsyhoView Answer on Stackoverflow
Solution 10 - VimSudeepView Answer on Stackoverflow
Solution 11 - Vimuser1602View Answer on Stackoverflow