用于在vim中自动完成c ++库函数的ctags

时间:2012-09-12 07:59:06

标签: ctags omnicomplete

在完成一些教程之后,我尝试使用充满活力的ctags进行自动填充,例如openGL函数。我用了命令

ctags -R --languages = C,C ++ --c ++ - types = + p --fields = + iaS --extra = + q ./

在freeglut.h,glew.h等所在的目录中。然后将其复制到.vimrc文件中指向的目录(在我的.vimrc中使用'set tags + =。/ myTag / tags') 当我尝试自动完成一些过剩函数时,我没有列出funciton参数,只有函数本身才能完成,但没有参数。

另一方面,当我将上面的ctags命令应用到我的主文件所在的同一目录中的.cpp文件时,它会自动填充函数参数。 我可能在这里遗漏了一些基本信息。

2 个答案:

答案 0 :(得分:2)

首先,我已经厌倦了手工管理ctags,我为此编写了插件Indexer。它提供无痛自动标签生成并使标签保持最新。有关详细信息,请参阅文章:Vim: convenient code navigation for your projects,它详细解释了Indexer + Vimprj的用法。

其次,对于代码自动完成,我建议您使用clang_complete。它提供了真正的,完美的C / C ++ / Objective-C完成真正的编译器,而不是标签的丑陋方法。

答案 1 :(得分:0)

在.vimrc文件中,在添加标记文件之前,添加目录。因此,如果您在$ HOME / .vim / tags目录中添加了tage,则需要添加以下行     set tags =〜/ .vim / tags

引用OmniCppComplete的部分(在你的.vimrc中)可能是这样的:

" configure tags - add additional tags here or comment out not-used ones
    " Setting the directory...
    set tags=~/.vim/tags 
        " Adding the tag files
        set tags+=~/.vim/tags/cpp
        set tags+=~/.vim/tags/gl
        set tags+=~/.vim/tags/sdl
        set tags+=~/.vim/tags/qt4
" set tags+=/home/yonatan/.vim/tags/standard 
" build tags of your own project with Ctrl-F12
map <C-F12> :!ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q .<CR>

" OmniCppComplete
let OmniCpp_NamespaceSearch = 1
let OmniCpp_GlobalScopeSearch = 1
let OmniCpp_ShowAccess = 1
let OmniCpp_ShowPrototypeInAbbr = 1 " show function parameters
let OmniCpp_MayCompleteDot = 1 " autocomplete after .
let OmniCpp_MayCompleteArrow = 1 " autocomplete after ->
let OmniCpp_MayCompleteScope = 1 " autocomplete after ::
let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]
" automatically open and close the popup menu / preview window
au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif
set completeopt=menuone,menu,longest,preview