在完成一些教程之后,我尝试使用充满活力的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文件时,它会自动填充函数参数。 我可能在这里遗漏了一些基本信息。
答案 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