不同的VimResized autocmds用于缩小和增长

时间:2016-02-24 17:17:06

标签: vim autocmd

只要调整vim应用程序窗口的大小,

autocmd VimResized * <foo>就会运行命令<foo>。 有没有办法根据调整大小是收缩还是增长来运行不同的命令? 如果是这样,控制台vim有什么警告吗?

1 个答案:

答案 0 :(得分:0)

一个窗口是二维的,所以收缩或增长的概念是非常不精确的:你在谈论高度,宽度,还是关于该区域?

我们假设你在谈论这个区域。

一种简单的方法是在启动时和每次调整胜利大小时保存窗口的最后一个大小;然后你只需要比较最后一个尺寸和新尺寸,每次调整胜利大小:

" 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。希望它也能正常工作