vimleeve getChar不';t与:wq一起工作

vimleeve getChar不';t与:wq一起工作,vim,vim-plugin,getchar,Vim,Vim Plugin,Getchar,Vim版本:Vim 8.0 假设我定义了一个需要用户输入的函数,我希望它在vim退出时运行。因此,我在我的vimrc中写道: function! OnQuit() redraw echon "Run quit function? [y/N] " let c = nr2char(getchar()) if c == "y" redraw echo "yes!" endif endfunction autocmd VimLea

Vim版本:Vim 8.0

假设我定义了一个需要用户输入的函数,我希望它在vim退出时运行。因此,我在我的vimrc中写道:

function! OnQuit()
    redraw
    echon "Run quit function? [y/N] "
    let c = nr2char(getchar())
    if c == "y"
        redraw
        echo "yes!"
    endif
endfunction

autocmd VimLeave * call OnQuit()
如果我用
:q
:wqa
退出,它会像一个符咒一样工作,并接受输入的第一个键。如果我选择退出,getchar()似乎不起作用,我需要键入键,然后按enter键


有人知道为什么这只适用于
:wqa
:q
,而不适用于
:wq
?任何解决方法?

使用
QuitPre
事件都可以满足您的需要。但是我无法解释为什么
vimleeve
make
getchar()
需要一个
Enter

QuitPre做了一些与我想要的不同的事情-我想在退出vim时运行它,而不是在退出时(如果从一个窗口输入I:q,就会发生这种情况)。