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

时间:2013-12-27 15:27:20

标签: 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只是忽略该行并继续,就像我在对话框中单击是一样?!

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

1 个答案:

答案 0 :(得分:2)

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

您明确设置了默认值1,因此使用第一个替代方案就不足为奇了。

正如您所说,您可以使用VimEnter自动命令来修复它。我测试了

augroup Foo
  au VimEnter * let choice = confirm('Run bundle setup ?',"&Yes\n&No", 1)
augroup END

它按预期工作。对于实际使用,我会将你的行包装在一个函数中,以保持自动命令的简单。

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