РЕДАКТИРОВАТЬ: только что заметил возможный дубликат комментария, после того, как я ввел этот ответ. Этот код выглядит немного лучше и более общего назначения, чем мой (мой ориентирован на OP, который имел дело с одним широким или двумя широкими разбиениями). Кроме того, я думаю, что вы можете удалить WinLeave autocmd в моем, поскольку выход из окна будет связан с вводом другого окна в сценариях, которые я могу себе представить.
Я думаю, что вы можете приблизиться к тому, что вы хотите, назначив autocmds 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