似乎无法用vim加载CCTree数据库

时间:2013-06-28 00:11:26

标签: vim cscope

我正在尝试为vim使用CCTree插件,但是当我尝试将以下行添加到我的vimrc以在每次打开vim时为CCTree自动加载cscope数据库时,我收到错误。这是直接从CCTree网站(https://sites.google.com/site/vimcctree/faq)复制的命令:

autocmd VimEnter * if filereadable('cscope.out') | CCTreeLoadDB cscope.out | endif

我得到的错误是:

Error detected while processing VimEnter Auto commands for "*":
E172: Only one file name allowed:  CCTreeLoadDB cscope.out | endif

我原本以为这会起作用,因为它直接来自CCtree网站,但我不知道如何调试这个,因为我几乎没有使用/编辑我的vimrc文件。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

似乎CCTreeLoadDB认为|endif是其命令的参数,而不是if的分隔符。

将其包含在函数中,以便if语句位于多行上,使autocmd有效。

function! LoadCCTree()
    if filereadable('cscope.out')
        CCTreeLoadDB cscope.out
    endif
endfunc
autocmd VimEnter * call LoadCCTree()

使用一个不使用函数包装器的衬垫。将CCTreeLoadDB包裹在一个exec中,这样就不会混淆。

autocmd VimEnter * if filereadable('cscope.out') | exec "CCTreeLoadDB 'cscope.out'" | endif

请参阅Ingo Karkat关于CCTreeLoadDB无法与|

一起使用的原因的答案

答案 1 :(得分:1)

您只能链接使用-bar定义的命令。如果:CCTreeLoadDB命令只是一个文件名,那么修改它是安全的:

:command! -bar ... CCTreeLoadDB ...

您可以向插件的作者发送此类建议。在此期间,最好将命令包装在:execute