Reputation: 3185
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.
Upvotes: 308
Views: 170939
Reputation: 2186
Provide the specific window number to close it 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())}
Upvotes: 3
Reputation: 309
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 openUpvotes: 19
Reputation: 361
I found that ctrl + w to the window you want to close, then just do :q. This works for me.
Upvotes: 7
Reputation: 1551
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
.
Upvotes: 3
Reputation: 68922
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.
Upvotes: 404
Reputation: 79185
Two alternatives for closing the current window are ZZ
and ZQ
, which will, respectively, save and not save changes to the displayed buffer.
Upvotes: 43
Reputation: 67067
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:
Each of these four closes all windows except the active one.
Upvotes: 329
Reputation: 7212
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.
Upvotes: 2
Reputation: 127478
to close all windows but the current one use:
CTRL+w, o
That is, first CTRL+w and then o.
Upvotes: 71
Reputation: 4947
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.
Upvotes: 8
Reputation: 3185
Okay I just detached and reattach to the screen session and I am back to normal screen I wanted
Upvotes: 0