跨选项卡自动调整 Vim 中的拆分大小

Resize splits in Vim automatically across tabs

我在 Vim 工作流程中使用了很多选项卡,每个选项卡中可能有多个拆分。我最近在 Preserving equal sized split view 中发现,在我的 vimrc 中加入这一行会自动使我的拆分大小相等。

autocmd VimResized * wincmd =

但是,如果我调整 Vim 所在的 window 的大小,它似乎只会调整我所在的 当前 选项卡的大小。对于 other 选项卡,拆分仍然大小不均。当 window 大小改变时,有没有办法自动调整所有选项卡中的拆分大小?

您可以使用 :tabdo 命令在所有现有选项卡中执行序列。这已经完成了工作:

autocmd VimResized * tabdo wincmd =

虽然可能有一个不良的副作用,它会在最后一个选项卡上结束命令。您可以通过保存它并在命令结束后恢复它来解决这个问题。通过定义函数更容易做到这一点。

function! ResizeWindows()
    let savetab = tabpagenr()
    tabdo wincmd =
    execute 'tabnext' savetab
endfunction
autocmd VimResized * call ResizeWindows()