gvim中确认对话框的奇怪行为

gvim中确认对话框的奇怪行为,vim,Vim,我的vimrc里有这个 sil! call neobundle#rc( expand('~/.vim/bundle/') ) if !exists(":NeoBundle") let choice = confirm('Run bundle setup ?',"&Yes\n&No", 1) if choice == 1 | call Setup_vim() | en el call Load_bundles() en 这在终端中工作得很好,但gvim只是

我的vimrc里有这个

sil! call neobundle#rc( expand('~/.vim/bundle/') )
if !exists(":NeoBundle")
    let choice = confirm('Run bundle setup ?',"&Yes\n&No", 1)
    if choice == 1 | call Setup_vim() | en
el
    call Load_bundles()
en
这在终端中工作得很好,但gvim只是忽略了该行并继续,就好像我在对话框中单击了Yes


只有在启动时才会发生这种情况,如果我调用包含此代码的函数,一切都会正常工作。我想我可以使用
au
命令解决这个问题,但我想知道这里的问题是什么?

在启动过程的早期读取vimrc文件;GUI初始化要晚得多。(具体来说,这些是
:help startup
下的步骤3和步骤8)

您显式地将默认值设置为1,因此使用第一个备选方案也就不足为奇了

正如您所说的,您可以通过使用
VimEnter
autocommand来修复它。我测试了

augroup Foo
  au VimEnter * let choice = confirm('Run bundle setup ?',"&Yes\n&No", 1)
augroup END
这一切都如期而至。为了实际使用,我会将您的行包装在一个函数中,以保持自动命令的简单性

:help startup
:help confirm()
:help :au
:help VimEnter