在Vim中取消拆分窗口

我已经水平分割我的窗户。 现在我怎样才能返回到正常模式,即没有拆分窗口只有一个窗口,而不取消所有打开的窗口。 我有5,不想“退出”,只想走出拆分窗口。

Control + w ,然后按qclosures每个窗口。

更新 :另外考虑eckes的答案,这可能会对你更有用,涉及:on如果你不想一次只做一个窗口,请阅读下文。

要closures所有的分割,我通常把光标放在窗口中,这个窗口应该是可见的窗口,然后执行:on使当前窗口成为可见的窗口。 很好记忆记忆。


编辑:: :help :on给我看,这些命令是一样的:

  • :on
  • :only
  • CTRL-W CTRL-o
  • 是的, CTRL-W o也有同样的效果(就像Nathan 回答的那样 )。

除了活动的窗口之外,这四个窗口都closures。

closures所有窗口,但目前的使用:

CTRL + wo

那就是先CTRL + w然后o

closures当前窗口的两种select是ZZZQ ,它们将分别保存并不保存对显示的缓冲区的更改。

命令:hide将隐藏当前聚焦的窗口。 我认为这是你正在寻找的function。

要在窗口之间导航,请按Ctrl + w后跟导航键(h,j,k,l或箭头键)

欲了解更多信息运行:help window:help hide在vim。

就像之前所说的那样,要按ctrl + w然后按o 。 这将使当前窗口“最大化”,同时closures其他窗口。 如果你想能够“unmaximize”它,那里有一个名为ZoomWin的插件。 否则,你将不得不从头开始重新创build窗口设置。

我很好地理解你的意图,我也只使用缓冲区,偶尔会根据需要做分割。

下面是我的.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! 

这很适合我的工作stream程

如果q被按下

  • 隐藏当前窗口,如果多个窗口打开,否则尝试退出vim。

如果qo被按下,

  • closures所有其他窗口,如果只有一个窗口没有效果。

当然,你可以把这个杂乱的部分包装成一个函数 ,例如

 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 ,因为我不使用macros进行编辑,而是使用:s:g:v和外部文本处理命令(如果需要),例如:'{,'}!awk 'some_programm' ,或者使用:norm! normal-command-here :norm! normal-command-here

好吧,我只是分开,重新连接到屏幕会议,我回到了正常的屏幕,我想

我发现ctrl-w到你要closures的窗口,然后只是:q这对我有用。