在vim中工作的命令在vimrc中不起作用

时间:2015-08-03 03:20:18

标签: vim default startup

我正在使用Pathogen在vim中设置捆绑包。我使用的一个这样的包是vdebug。我想设置vdebug,因此它默认没有“服务器”选项。在vim中,我可以用

中的任何一个来做
VdebugOpt server ""
let g:vdebug_options['server'] = ""

但是如果我在〜/ .vimrc中设置其中一个命令,那么当我第一次启动vim时它会失败。这是一个非常简单的.vimrc,可以重现问题:

execute pathogen#infect()
syntax on
filetype plugin indent on
call pathogen#helptags()
VdebugOpt server ""

有了这个,我得到了

Error detected while processing /home/editor/.vimrc:
line    5:
E492: Not an editor command: VdebugOpt server ""

或者,如果我将最后一行更改为

let g:vdebug_options['server'] = ''

我得到了

Error detected while processing /home/editor/.vimrc:
line    5:
E121: Undefined variable: g:vdebug_options

但是一旦vim启动,其中任何一个命令都会起作用。导致这种差异的原因是什么,以及如何在启动时为vim设置我想要的默认值?

2 个答案:

答案 0 :(得分:3)

您可以在:h initialization中看到Vim在启动时会运行.vimrc(步骤3),然后运行插件(步骤4)。 VdebugOpt中没有定义.vimrcg:vdebug_options也没有定义{(1}}。所以你不能添加新选项。

但是,您可以定义 g:vdebug_options

let g:vdebug_options = {
  \   'server' = ''
  \ }

或等效

let g:vdebug_options = {}
let g:vdebug_options['server'] = ''

答案 1 :(得分:0)

如另一个答案所述,当.vimrc运行时,尚未定义插件命令。您可以通过在VimEnter autocmd中调用该命令来解决此问题:

autocmd VimEnter * VdebugOpt server ""