autocmd VimResized * <foo>
будет выполнять команду <foo>
всякий раз, когда изменяется окно приложения vim. Есть ли способ запуска различных команд в зависимости от того, является ли изменение размера сжатым или растущим? И если да, есть ли какие-либо предостережения для консоли vim?Различные автовыключатели VimResized для сокращения и роста
0
A
ответ
0
Окно 2-мерное, поэтому концепция сокращения или роста довольно неточна: вы говорите о высоте, о ширине или о площади?
Предположим, вы говорите об этом районе.
Простой способ сделать это - сохранить последний размер окна, при запуске и при каждом изменении размера выигрыша; то вы просто должны сравнить последний размер и новый, каждый раз, когда выигрыш изменяет размер:
" Defines a command to save the current dims:
command! SaveVimDims let g:last_lines=&lines | let g:last_columns=&columns
" Saves the dims on startup:
au VimEnter * SaveVimDims
" Calls the func below, each the win is resized:
au VimResized * call VimResized_Func()
function! VimResized_Func()
" Gets the area of the last dims:
let last_area = g:last_lines * g:last_columns
" Saves the new dims:
SaveVimDims
" Gets the area of the new dims:
let cur_area = g:last_lines * g:last_columns
" Compares the areas:
if cur_area < last_area
" do something when shrinking
else
" do something when growing
endif
endf
Это был испытан только с Gvim; Я никогда не использую Vim в консоли. Надеюсь, что это сработает
Консоль Vim никогда не вызовет/не получит это событие. – romainl
@romainl Я уже запускал это событие в консоли vim. – user2141130