Как пропорционально изменить размер разделенных окон в Vim?
Итак, во-первых, это не ответ, который я ищу:
autocmd VimResized * :wincmd =
позвольте мне объяснить: предположим, у меня есть 2 вертикально разделенных окна, одно размером 30% и одно размером 70%. Когда я изменяю размер окна, я хочу, чтобы этот процент оставался прежним. Без этой команды раскол справа медленно разрушается, так что вы в конечном итоге ничего не видите в окне. С помощью приведенной выше команды, как только вы начнете изменять размер окна, размеры окна немедленно изменятся на 50%/50%.
Я работаю с большим количеством расколов (вертикальных и горизонтальных), и я не хочу, чтобы команда выше просто делала все равным, но в то же время я хочу, чтобы они изменялись пропорционально окну... Я хочу, чтобы процентная высота / ширина всех расколов в окне оставалась неизменной при изменении размера окна. Идеи?
3 ответов
Я попытался реализовать это в моем плагин ProportionalResize, следуя в основном подходу, изложенному в ответе роменля. Вы можете обернуть свои команды изменения размера в :ProportionalResize
wrapper; плагин также подключается к различным событиям, чтобы обеспечить автоматическую адаптацию при изменении размера окна Vim, например, с помощью мыши.
если вы спрашиваете" Vim-официальный " способ сделать это, ответ нет. (Vim 7.3)
чтобы доказать это:
открыть vim, введите :h todo<Enter>
введите /proportionally[Enter]
вы увидите:
- When resizing the whole Vim window, the windows inside should be resized
proportionally (Webb).
так это в списке задач vim. В этом окне введите gg
, вы можете увидеть ведущий минус "-"
означает Priority classification:
- unclassified
если вы хотите это сделать, вы можете написать функцию самостоятельно, на VimResized
событие, размера всех окон на основе ваших логика.
вы можете создать функцию, которая регистрирует размеры окон и связывает их с кучей событий, таких как WinEnter
/WinLeave
и еще один привязанный к VimResized
который использует эти значения для изменения размера окон.
Это не похоже на тривиальную задачу.
или даже как хорошая идея.