在Vim中从垂直分割切换到水平分割
在Vim中,如何将当前窗口从水平分割切换到垂直分割,反之亦然?
我刚才那么意外地做了这个,但是我再也找不到钥匙了。
Vim邮件列表说(为了更好的可读性,重新格式化):
将两个垂直分割的窗口更改为水平分割
Ctrl – w t Ctrl – w K
水平到垂直:
Ctrl – w t Ctrl – w H
说明:
Ctrl – 使第一个(顶部)窗口当前为Ctrl – w K将当前窗口移动到顶部的全angularCtrl – w H将当前窗口移动到最左边的全高
请注意,t是小写,K和H是大写。
而且,只有两个窗口,看起来你可以放弃Ctrl – w t部分,因为如果你已经在两个窗口中的一个窗口中,那么使它成为最新的点是什么?
^w
后跟大写的H
, J
, K
或L
会像当前的光标导航一样,将当前窗口分别移动到最left
, bottom
, top
或right
。
小写等价物移动焦点而不是移动窗口。
当您有两个或更多个窗口水平或垂直打开,并且想将其全部切换到另一个方向时,可以使用以下方法:
(切换到水平)
:windo wincmd K
(切换到垂直)
:windo wincmd H
这是有效地去每个窗口单独使用^ W K或^ W H。
在VIM中,看看下面的内容,看看你可能做了什么不同的select:
:帮助开幕式
例如:
Ctrl – W s
Ctrl – W o
Ctrl – W v
Ctrl – W o
Ctrl – W 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
编辑:使用Ctrl – W 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>