我把窗口水平拆分了。现在该怎么回到正常模式,也就是没有拆分窗口,只有一个窗口,而不取消所有打开的窗口。我有5个窗口,不想“退出”,只是想退出拆分窗口。
如何退出拆分窗口返回正常模式,同时保留其他打开的窗口?
按下 Control+w,然后再按下 q 以逐个关闭每个窗口。
更新:如果您不想逐个关闭窗口,也可以考虑 eckes 的答案,使用:on
(请查看下文)可能更有用。
:q!
来退出它。意思是,“我想退出这个!真的!” - Mike S:on
命令将会返回 E445: Other window contains changes
并且不会关闭另一个窗口。例如,我通常会创建一个新窗口,并在其中读取我想要复制的文件。此时,Vim 会认为另一个窗口存在未写入的更改。如果遇到这种情况,请使用 :on!
命令强制关闭窗口。 - Sabuncu要关闭除当前窗口以外的所有窗口,请使用以下操作:
CTRL+w, o
也就是先按下CTRL+w,然后再按下o。
CTRL+W o
。 - Paolo关闭当前窗口的两种选择是ZZ
和ZQ
,分别会保存和不保存对显示缓冲区所做的更改。
Z
,因为我是德国人。(提示:如果你经常在DE/EN设置之间切换,这可能与键盘布局有关) - Tino来自:help opening-window
(搜索“关闭窗口”-/Closing a window
)
:q[uit]
关闭当前窗口和缓冲区。如果它是最后一个窗口,那么也会退出 vim。:bd[elete]
卸载当前缓冲区并关闭当前窗口。:qa[ll]
或:quita[ll]
将关闭所有缓冲区和窗口并退出vim(使用:qa!
强制退出而不保存更改):clo[se]
关闭当前窗口但保持缓冲区打开。如果只有一个窗口,则此命令失败。:hid[e]
在当前窗口中隐藏缓冲区(请参阅:help hidden
):on[ly]
关闭所有其他窗口,但保留所有缓冲区打开状态命令:hide将隐藏当前焦点窗口。我认为这就是你要找的功能。
要在窗口之间导航,请键入Ctrl+w,然后键入导航键(h、j、k、l或箭头键)
要获取更多信息,请在vim中运行:help window
和:help hide
。
我发现使用ctrl+w关闭想要关闭的窗口,然后只需执行:q。这对我有用。
^W^W:q
作为可能解决方案以消除分割的答案。请注意,^W 到你想关闭的窗口
显然意味着多次使用 ^W^W
来切换到你想关闭的窗口。 - Tino我很明白你的意图,我也只使用缓冲区,并且偶尔需要拆分。
下面是我.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!
这非常适合我的工作流程
如果按下了
q
- 如果有多个窗口打开,则隐藏当前窗口,否则尝试退出vim。
如果按下了
qo
,
- 关闭所有其他窗口,如果只有一个窗口则没有影响。
当然,你可以将这个混乱的部分封装成一个函数,例如:
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>
附注:我重新映射了q
,因为我不使用宏进行编辑,而是使用:s
、:g
、:v
和外部文本处理命令(如果需要),例如:'{,'}!awk 'some_programm'
,或者使用:norm! normal-command-here
。
提供窗口号以关闭特定窗口,无需离开当前窗口:
:[N]close
:close[N]
:[N]quit
:quit[N]
Ctrl-W[N]c
:set statusline+=%{tabpagewinnr(tabpagenr())}