:tabnew
:vsplit
:split
<C-W>l
:split
然后输入类似
<C-W>J
的命令将导致它们不再是正方形;在这种情况下,它将迫使一个窗口在底部浮动。我该如何做相反的事情-也就是说,将窗口推回正方形结构?
我已经阅读过
:help window-moving
,但没有发现任何有用的信息。#1 楼
据我所知,没有简单的方法将开放式拆分排列为拆分网格。在这种情况下,返回网格的最简单方法是手动校正结构:关闭顶部浮动的拆分
返回拆分占一半的拆分屏幕
用
:split <file>
重新拆分这将使您返回到网格。在不影响窗口布局的情况下进行拆分的方法是使用[count] Ctrl -W x,它可以将当前窗口与[count]窗口交换。
评论
我知道我可以做到,但是有一些缺点。 (1)如果窗口是给定缓冲区的唯一视图,并且缓冲区脏了,则必须使用:wq或:q!,这都不是理想的。 (2)这将重置任何特定于窗口的设置,例如光标位置。 (3)这会破坏正在进行的差异。本质上,窗户是一等公民。仅仅摧毁它们并创建新的还不够。
– wchargin
15年2月18日在1:42
@WChargin如果您将vim设置为允许隐藏缓冲区,则其中的某些内容将消失。但是,是的
–德罗伯特
15年2月18日在16:54
与其关闭窗口并将缓冲区拆分到所需位置,不如将新窗口拆分到想要的位置,将其与要移动的窗口交换,然后关闭(已移动的)新窗口。
–tommcdo
2015年2月19日在2:02
#2 楼
您可以使用winsaveview
命令保存您喜欢的布局。为了方便起见,这里将其映射到\sv
:nnoremap <Leader>sv :let g:myLayout = winsaveview()<CR>
在破坏布局之前,请务必先运行该代码! ;-)
现在,如果您不小心破坏了布局,可以将其还原:
nnoremap <Leader>rv :call winrestview(g:myLayout)<CR>
#3 楼
用于重新排列窗口的默认键仅在其本地拆分组中起作用:CTRL-W x Exchange current window with next (in group)
CTRL-W r Rotate windows down/right (in group)
或将窗口划分为顶部组:
CTRL-W H | J | K | L Move window to left/top/bottom/right-most edge
当您要将缓冲区移至其他拆分组之一时,这些方法是不够的。
但是在这种情况下,WindowSwap插件可以提供帮助。它使您可以交换任意两个任意窗口的缓冲区。
<leader> yw "Yank window": Yank the current window
<leader> pw "Paste window": Swap the current window with the yanked window
评论
当您按@Rich我认为OP只是在举例说明一种情况,此后他可能想将窗口重置为网格形成。
@GonçaloRibeiro正确。
相关:如何更改当前拆分的宽度和高度?,如何将所有窗口转换为水平,垂直或制表符拆分?
尽管不是答案,但是如果您发现自己在寻找代码示例来制定自己的解决方案,我建议您检查一下神话般的Microviche项目。