在Vim中从垂直分割切换到水平分割
Vim mailing list说(重新格式化为更好的可读性):
要更改垂直分割 窗口horizonally分裂
按Ctrl - 瓦特吨Ctrl键 - wķ
水平地垂直地:
Ctrl键 - 瓦特吨Ctrl键 - 瓦特ħ
说明:
Ctrl键 - 瓦特吨使第一(左上)窗口当前 Ctrl键 - 瓦特ķ移动当前窗口以全宽在最高层 Ctrl键 - 瓦特H将当前窗口移动到最左端的全高位
请注意,t是小写,K和H是大写字母。
而且,只有两个窗口,好像你可以删除按Ctrl - 因为如果你只在两个窗口之一是已经,什么使得它目前的点瓦特吨一部分?
所以,如果你有两个窗口水平分割,和你在下面的窗口,你只需使用^ WL。 – 2009-08-13 02:17:42
....电源...今天我的vim-fu翻了一倍,谢谢。有很多有趣的^ W命令(b,w等) – 2012-12-07 14:10:22
莫名其妙地不适合我.. =/ – holms 2013-02-28 09:07:24
在VIM,看看下面看到你可能会做什么不同的选择:
:帮助开放窗口
例如:
按Ctrl - w^s
Ctrl - WØ
按Ctrl - W¯¯v
按Ctrl - W¯¯Ø
按Ctrl - W¯¯小号
...
^w
其次是资本H
,J
,K
或L
将当前窗口移动到远left
,bottom
,top
或right
分别像正常光标导航。
小写等价物移动焦点而不是移动窗口。
这是多少因为用户使用hjkl在缓冲区之间移动。 – 2014-08-22 06:07:50
接受的答案是一个很好的答案,但对我而言,这个答案更容易记住。谢谢! – 2015-11-23 22:14:21
也可以使用nerdtree更好地工作。 – arcseldon 2017-11-07 16:04:17
以下ex命令将(重新)拆分任何数量的窗口:
- 要垂直拆分(例如使窗之间的垂直分隔),类型
:vertical ball
- 要水平拆分,类型
:ball
如果存在隐藏缓冲区,则发出这些命令也会使隐藏缓冲区可见。
这应该是被接受的答案,因为目前接受的答案只适用于两个文件。这个答案更完整。 – DrStrangepork 2015-08-13 17:53:19
':vert [ical] ball'在文档中如此:'vert ball'也可以,并且更短。 – Titou 2017-05-03 09:18:45
':ball'将3个垂直窗口缩小到2个水平窗口,而':vert ball'正确地将3个水平窗口映射到3个垂直窗口。 – Titou 2017-05-03 09:21:28
当你有两个以上打开窗户水平或垂直方向,并希望所有切换他们到其他方向,你可以使用以下命令:
(切换到水平)
:windo wincmd K
(切换到垂直)
:windo wincmd H
这是有效实现了ely每个窗口单独使用和使用^WK或^WH。
继马克Rushakoff的小费above,这里是我的映射:
" vertical to horizontal (| -> --)
noremap <c-w>- <c-w>t<c-w>K
" horizontal to vertical (-- -> |)
noremap <c-w>\| <c-w>t<c-w>H
noremap <c-w>\ <c-w>t<c-w>H
noremap <c-w>/ <c-w>t<c-w>H
编辑:使用按Ctrl - 瓦特[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>
也许[dwm.vim(https://github.com/spolu/dwm.vim)插件将还挺有用 – 2013-01-12 12:43:49