如何按比例调整Vim中拆分窗口的大小?

如何按比例调整Vim中拆分窗口的大小?,vim,macvim,Vim,Macvim,好的,首先,这是我想要的答案: autocmd VimResized * :wincmd = 让我解释一下:假设我有两个垂直分割的窗口,一个30%大小,一个70%大小。当我调整窗口大小时,我希望百分比保持不变。如果没有此命令,右侧的拆分将慢慢折叠,因此最终无法在窗口中看到任何内容。使用上面的命令,一旦开始调整窗口大小,窗口大小立即更改为50%/50% 我使用了很多拆分(垂直和水平),我不希望上面的命令使所有内容都相等,但同时我确实希望它们调整大小,只是与窗口成比例。。。我希望在调整窗口大小时,

好的,首先,这是我想要的答案:

autocmd VimResized * :wincmd =
让我解释一下:假设我有两个垂直分割的窗口,一个30%大小,一个70%大小。当我调整窗口大小时,我希望百分比保持不变。如果没有此命令,右侧的拆分将慢慢折叠,因此最终无法在窗口中看到任何内容。使用上面的命令,一旦开始调整窗口大小,窗口大小立即更改为50%/50%

我使用了很多拆分(垂直和水平),我不希望上面的命令使所有内容都相等,但同时我确实希望它们调整大小,只是与窗口成比例。。。我希望在调整窗口大小时,窗口中所有拆分的高度/宽度百分比保持不变。想法?

如果你问的是一个“vim-official”方法,答案是否。(Vim 7.3)

为了证明这一点:

打开vim,键入
:h todo
,然后按比例键入
[输入]
,您将看到:

-   When resizing the whole Vim window, the windows inside should be resized
    proportionally (Webb).
因此,它在vim的待办事项列表中。在此窗口类型
gg
,您可以看到前导的减号
“-”
表示
优先级分类:

-   unclassified

如果您想这样做,您可以在
VimResized
event上自己编写一个函数,根据您的逻辑调整所有窗口的大小。

您可以创建一个函数,记录窗口大小,并将其绑定到一组事件,如
WinEnter
/
WinLeave
,以及另一个绑定到
VimResized
的事件,该函数使用这些值调整窗口大小

这听起来不像是一项琐碎的任务


或者甚至是一个好主意。

我已经尝试在我的文章中实现了这一点,基本上遵循了Romaill回答中概述的方法。您可以将调整大小命令包装在
:resize
包装中;该插件还与各种事件挂钩,以允许在调整Vim窗口大小时(例如,使用鼠标)进行自动调整。

不,我不是在寻求一种正式的方法。只是一种方法。而且我自己写函数还不够好。upvote——虽然就我个人而言,听起来不是个坏主意。如果要这样做,就需要存储窗口的宽度/高度,比如
line('w$)-line('w0')
winwidth(…)
。好吧……存储的内容非常明显。如何储存以及何时储存对我来说并不那么明显。在我看来,整个事情听起来有点脆弱。编写一个添加
VimResizedPre
事件的补丁可能会更快。你应该在插件文档的某个地方提到它依赖于Inkart/vim ingo库(对于ingo#msg#errormsg)@Von:它确实-就在插件页面上,在帮助文件中:-需要ingo-library.vim插件(vimscript#4433),版本为1.000或更高。啊,我的错。很抱歉