似乎无法使用vim加载CCTree数据库
我正在尝试为vim使用CCTree插件,但是当我尝试在vimrc中添加以下行以在每次打开vim时自动加载CCTree的cscope数据库时,我得到了一个错误。这是直接从CCTree网站()复制的命令: 我得到的错误是:似乎无法使用vim加载CCTree数据库,vim,cscope,Vim,Cscope,我正在尝试为vim使用CCTree插件,但是当我尝试在vimrc中添加以下行以在每次打开vim时自动加载CCTree的cscope数据库时,我得到了一个错误。这是直接从CCTree网站()复制的命令: 我得到的错误是: Error detected while processing VimEnter Auto commands for "*": E172: Only one file name allowed: CCTreeLoadDB cscope.out | endif 我本以为这会工作
Error detected while processing VimEnter Auto commands for "*":
E172: Only one file name allowed: CCTreeLoadDB cscope.out | endif
我本以为这会工作,因为它是直接从CCtree网站,但我不知道如何调试,因为我几乎没有使用/编辑我的vimrc文件。任何帮助都将不胜感激。似乎
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
不能与一起工作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
不能与|
一起使用,您只能链接使用-bar
定义的命令。如果:CCTreeLoadDB
命令仅获取文件名,则可以安全地修改它:
:command! -bar ... CCTreeLoadDB ...
您可以向插件的作者发送这样的建议。同时,最好将命令包装在:execute
中。您只能链接使用-bar
定义的命令。如果:CCTreeLoadDB
命令仅获取文件名,则可以安全地修改它:
:command! -bar ... CCTreeLoadDB ...
您可以向插件的作者发送这样的建议。同时,最好将命令包装在:execute
中,这非常有效,谢谢!他们真的应该为像我这样对使用vimrc文件经验很少的人更新他们的说明。顺便说一下,我使用了函数方法(供将来参考)。这非常有效,谢谢!他们真的应该为像我这样对使用vimrc文件经验很少的人更新他们的说明。顺便说一下,我使用了函数方法(供将来参考)。