在Vim中设置新垂直分割的最小宽度



我使用set columns=90将Vim窗口设置为90列,但是当命令(特别是pyunit-vim)打开新的垂直分割时,这会导致问题,因为每个窗口只有45列,这太窄了。理想情况下,我想添加分割到现有的宽度,而不是冲击它。有什么方法可以指定这种行为吗?

编辑:刚刚注意到可能重复的评论,在我输入这个答案之后。那里的代码看起来比我的更好,更通用(我的是针对OP谁是处理一个宽或两个宽的分裂)。此外,我认为你可以删除WinLeave autocmd在我的,因为离开一个窗口将与进入一个不同的窗口在我能想到的场景配对。

我认为你可以通过给WinEnter和WinLeave分配自动命令来接近你想要的。下面的代码设置为在进入或离开窗口时调用大小调整函数。我认为,一个更好的进入事件可能是BufWinEnter。您可能需要调整,但在您的vimrc中类似的代码将工作,我认为:

autocmd WinEnter * call AdjustSize()
autocmd WinLeave * call AdjustSize()
function! AdjustSize()
    if (winwidth('%')<50) && (&columns<=90)
        set columns = 2 * &columns
        "then make widths the same
        exe "normal! <c-w>="
    else 
        set columns=90
        " or adjust size only if window isnt' huge...
        " if columns >= 150
        "     set columns = 90
        " endif
    endif
endfunction

最新更新