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>
9条答案
按热度按时间rsl1atfo1#
Vim mailing list说(重新格式化以提高可读性):
将 * 两个 * 垂直拆分窗口更改为水平拆分窗口
Ctrl-wtCtrl-wK
从水平到垂直:
Ctrl-wtCtrl-wH
说明:
Ctrl-wt使第一个(顶部)窗口当前
Ctrl-wK将当前窗口移动到最顶部的全宽
Ctrl-WH将当前窗口移动到最左边的全高位置
注意,t是,K和H是。
此外,只有两个窗口,似乎你可以放弃Ctrl-wt部分,因为如果你已经在只有两个窗口之一,什么是使其当前的点?
sshcrbum2#
Ctrl-w后接H、J、K或L(大写)将当前窗口分别移动到远处的
left
、bottom
、top
或right
,就像正常的光标导航一样。小写等效项移动焦点而不是移动窗口。
tzdcorbm3#
当您有两个或更多的窗口水平或垂直打开,并希望将它们切换到其他方向时,您可以使用以下方法:
(切换到水平)
(切换到垂直)
它有效地单独进入每个窗口,并使用^WK或^WH。
hmae6n7t4#
下面的ex命令将(重新)拆分任意数量的窗口:
:vertical ball
:ball
如果有隐藏的缓冲区,发出这些命令也会使隐藏的缓冲区可见。
vql8enpb5#
在Vim中,看看下面的内容,看看你可能做的事情的不同替代方案:
:帮助打开窗口
例如:
Ctrl-W
Ctrl-Wo
Ctrl-Wv
Ctrl-Wo
Ctrl-W
...
7nbnzgx96#
横向到纵向拆分
Ctrl+W为窗口命令,
按Shift+H或Shift+L
纵横拆分
Ctrl+W为窗口命令,
然后按Shift+K或Shift+J
当只有两个窗口时,这两种解决方案都适用。
在发出窗口命令Ctrl+W后,基本上是按照Shift+方向字母指示的方向移动窗口。
默认垂直拆分打开帮助
将这两行添加到
.vimrc
:cabbrev
代表命令缩写。:vert[ical] {cmd}
总是在垂直分割的窗口中执行cmd
。uxh89sit7#
受Steve answer的启发,我写了一个简单的函数,可以在当前选项卡中的所有窗口的垂直和水平拆分之间切换。您可以像下面最后一行那样将其绑定到Map。
wbrvyc0a8#
按照Mark Rushakoff的提示above,这是我的Map:
w8ntj3qf9#
在2023年遇到这个问题,Vim和neovim都提供了内置的
winlayout()
函数,它将窗口的结构作为树返回。这可以以任何方式进行解析和操作,然后通过执行Vi & Vim回答中概述的操作重新应用以呈现转换后的布局。受此用例的启发,我还从自己的配置中提取了一个名为ventana.nvim的小插件,其他人可能也会觉得使用起来很方便。