在Vim中,如何将当前窗口从水平分割切换到垂直分割,反之亦然?
刚才我是无意中这样做的,但是我找不到钥匙了。
在Vim中,如何将当前窗口从水平分割切换到垂直分割,反之亦然?
刚才我是无意中这样做的,但是我找不到钥匙了。
Answers:
Vim邮件列表说(重新格式化以提高可读性):
将两个垂直拆分的窗口更改为水平拆分
Ctrl- w t Ctrl-w K
水平到垂直:
Ctrl- w t Ctrl-w H
说明:
Ctrl- w t 使第一个(左上)窗口为当前窗口
Ctrl- w K 将当前窗口移到最顶部的全角
Ctrl- w H 将当前窗口移到最左侧的全高
请注意,t是小写字母,K和H是大写字母。
另外,只有两个窗口,您似乎可以删除Ctrl- w t部分,因为如果您已经位于仅有的两个窗口之一中,将其设置为当前状态有什么意义?
:nmap <leader>th <C-w>t<C-w>H
和:nmap <leader>tk <C-w>t<C-w>K
Ctrl- w其次H,J,K或L(大写)将当前窗口移动到远left
,bottom
,top
或right
分别像正常光标导航。
小写字母等效项将移动焦点而不是移动窗口。
Ctrl
- w
(我不知道您的示例中是否^
意味着Ctrl
)来工作。
^
是Ctrl
。
以下ex命令将(重新)拆分任意数量的窗口:
:vertical ball
:ball
如果存在隐藏缓冲区,则发出这些命令还将使隐藏缓冲区可见。
:vert[ical] ball
在文档:vert ball
中也可以,而且更短。
:ball
将3个垂直窗口缩小为2个水平窗口,同时:vert ball
将3个水平窗口正确映射为3个垂直窗口。
水平到垂直拆分
Ctrl+ W用于窗口命令,后跟Shift+ H或Shift+L
垂直至水平分割
Ctrl+ W用于窗口命令,后跟Shift+ K或Shift+J
当只有两个窗口时,两种解决方案均适用。
将这两行都添加到.vimrc
:
cabbrev help vert help
cabbrev h vert h
:vert[ical] {cmd}
总是cmd
在垂直分割的窗口中执行。
受史蒂夫(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>
if winnr() == 1 windo wincmd J windo wincmd k else windo wincmd J endif
和if winnr() == 1 windo wincmd L windo wincmd h else windo wincmd L endif
希望保持相同的分裂,对我来说效果更好。