如何在Vim中将当前窗口从水平分割切换为垂直分割,反之亦然?
我偶然做到了,但我再也找不到钥匙了.
Vim邮件列表说(重新格式化以获得更好的可读性):
要将两个垂直分割的窗口更改为水平分割
Ctrl- w t Ctrl-w K
水平到垂直:
Ctrl- w t Ctrl-w H
说明:
Ctrl- w t 使第一个(topleft)窗口 成为当前窗口Ctrl- w K将当前窗口移动到最顶部的全宽度 Ctrl- w H 将当前窗口移动到最左边的全高度
请注意,t是小写的,K和H是大写的.
此外,只有两个窗口,似乎你可以放弃Ctrl- w t部分,因为如果你已经只在两个窗口之一,那么它是什么意思?
Ctrl- w其次H,J,K或L(大写)将当前窗口移动到远left
,bottom
,top
或right
分别像正常光标导航.
小写等效项移动焦点而不是移动窗口.
当您有两个或多个水平或垂直打开的窗口并希望将它们全部切换到另一个方向时,您可以使用以下方法:
(切换到水平)
:windo wincmd K
(切换到垂直)
:windo wincmd H
它有效地单独使用每个窗口并使用^WK或^WH.
以下ex命令将(重新)拆分任意数量的窗口:
要垂直分割(例如在窗口之间制作垂直分隔线),请键入 :vertical ball
要水平拆分,请键入 :ball
如果存在隐藏缓冲区,则发出这些命令也会使隐藏缓冲区可见.
在VIM中,请查看以下内容,了解您可能已做的不同选择:
:帮助打开窗口
例如:
Ctrl- W s
Ctrl- W o
Ctrl- W v
Ctrl- W o
Ctrl- W s
......
水平到垂直拆分Ctrl+ W用于窗口命令,后跟Shift+ H或Shift+L
垂直至水平分割Ctrl+ W用于窗口命令,后跟Shift+ K或Shift+J
当只有两个窗口时,两种解决方案均适用。
受史蒂夫(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 nnoremapwt :call ToggleWindowHorizontalVerticalSplit()
继马克Rushakoff的尖上面,这里是我的映射:
" vertical to horizontal ( | -> -- ) noremap- t K " horizontal to vertical ( -- -> | ) noremap \| t H noremap \ t H noremap / t H
编辑:使用Ctrl- w r交换两个窗口,如果他们不是良好的顺序.