【发布时间】:2011-06-16 03:13:46
【问题描述】:
我已经水平拆分了我的窗口。现在我怎样才能回到正常模式,即没有拆分窗口只有一个窗口,而不会取消我所有打开的窗口。我有 5 个,不想“退出”,只想离开拆分窗口。
【问题讨论】:
-
你能接受埃克斯的回答吗?它比当前接受的要有用得多...
我已经水平拆分了我的窗口。现在我怎样才能回到正常模式,即没有拆分窗口只有一个窗口,而不会取消我所有打开的窗口。我有 5 个,不想“退出”,只想离开拆分窗口。
【问题讨论】:
按Control+w,然后按q一次关闭每个窗口。
更新:如果您不想一次只看一个窗口,还可以考虑 eckes 答案,这可能对您更有用,涉及 :on(请阅读下文)。
【讨论】:
:q! 退出。意思是,“我想退出这个!真的!”
【讨论】:
:on 将回复 E445: Other window contains changes,并且不会关闭另一个窗口。例如,我通常会创建一个新窗口,并将我想从中提取的文件读入其中。在这种情况下,Vim 认为另一个窗口有未写入的更改。在这种情况下,请使用:on! 强制关闭。
关闭除当前窗口以外的所有窗口:
CTRL+w, o
即先CTRL+w再o。
【讨论】:
CTRL+W o。
关闭当前窗口的两种选择是ZZ 和ZQ,它们将分别保存和不保存对显示缓冲区的更改。
【讨论】:
Z,因为我是德国人。 (剧透:如果您经常在 DE/EN 设置之间切换,则键盘布局)
来自:help opening-window(搜索“关闭窗口”-/Closing a window)
:q[uit] 关闭当前窗口和缓冲区。如果是最后一个窗口,它也会退出 vim:bd[elete]卸载当前缓冲区并关闭当前窗口:qa[all] 或 :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 to the window you want to close 显然意味着多次使用^W^W 来切换到您要关闭的窗口..
我很理解你的意图,我也专门使用缓冲区,如果需要偶尔会拆分。
以下是我.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。
【讨论】:
就像其他人之前所说的那样,按ctrl+w然后按o。这将“最大化”当前窗口,同时关闭其他窗口。如果您希望能够“取消最大化”它,可以使用一个名为 ZoomWin 的插件。否则,您必须从头开始重新创建窗口设置。
【讨论】:
好的,我刚刚分离并重新连接到屏幕会话,我又回到了我想要的正常屏幕
【讨论】:
vim 的拆分窗口模式,这只会离开screen 的拆分窗格模式——这很容易被误会,所以也许其他人也会这样做。顺便说一句,我觉得这个屏幕功能很烦人,因此我现在默认为tmux,它允许重新连接所有拆分都完好无损。
提供窗口编号以关闭特定窗口而不离开当前窗口:
:[N]close
:close[N]
:[N]quit
:quit[N]
Ctrl-W[N]c
窗口编号可以通过以下设置显示在状态行:
:set statusline+=%{tabpagewinnr(tabpagenr())}
【讨论】: