在Vim中从垂直分割切换到水平分割

在Vim中,如何将当前窗口从水平分割切换到垂直分割,反之亦然?

我刚才那么意外地做了这个,但是我再也找不到钥匙了。

Vim邮件列表说(为了更好的可读性,重新格式化):

两个垂直分割的窗口更改为水平分割

Ctrlw t Ctrlw K

水平到垂直:

Ctrlw t Ctrlw H

说明:

Ctrl – 使第一个(顶部)窗口当前为Ctrlw K将当前窗口移动到顶部的全angularCtrlw H将当前窗口移动到最左边的全高

请注意,t是小写,K和H是大写。

而且,只有两个窗口,看起来你可以放弃Ctrlw t部分,因为如果你已经在两个窗口中的一个窗口中,那么使它成为最新的点是什么?

^w后跟大写的HJKL会像当前的光标导航一样,将当前窗口分别移动到最leftbottomtopright

小写等价物移动焦点而不是移动窗口。

当您有两个或更多个窗口水平或垂直打开,并且想将其全部切换到另一个方向时,可以使用以下方法:

(切换到水平)

 :windo wincmd K 

(切换到垂直)

 :windo wincmd H 

这是有效地去每个窗口单独使用^ W K^ W H。

在VIM中,看看下面的内容,看看你可能做了什么不同的select:

:帮助开幕式

例如:

CtrlW s
CtrlW o
CtrlW v
CtrlW o
CtrlW s

下面的ex命令将(重新)分割任意数量的窗口:

  • 要垂直分割(例如,在窗口之间制作垂直分隔线),请键入:vertical ball
  • 要水平分割,请键入:ball

如果有隐藏的缓冲区,发出这些命令也会使隐藏的缓冲区可见。

遵循Mark Rushakoff的提示,这是我的映射:

 " vertical to horizontal ( | -> -- ) noremap <cw>- <cw>t<cw>K " horizontal to vertical ( -- -> | ) noremap <cw>\| <cw>t<cw>H noremap <cw>\ <cw>t<cw>H noremap <cw>/ <cw>t<cw>H 

编辑:使用CtrlW r交换两个窗口,如果他们不是在良好的秩序。

受Steve答复的启发,我写了一个简单的函数,在当前选项卡中的所有窗口的垂直和水平分割之间切换。 你可以像下面最后一行那样将它绑定到映射。

 function! ToggleWindowHorizontalVerticalSplit() if !exists('t:splitType') let t:splitType = 'vertical' endif if t:splitType == 'vertical' " is vertical switch to horizontal windo wincmd K let t:splitType = 'horizontal' else " is horizontal switch to vertical windo wincmd H let t:splitType = 'vertical' endif endfunction nnoremap <silent> <leader>wt :call ToggleWindowHorizontalVerticalSplit()<cr>