1. 在 ~/.vim 下建立資料夾 tags
2. 建立 stdc++ tags, 下載並解壓縮 modified libstdc++ headers 到 ~/.vim/tags/cpp_src
3. 建立 ctags 吧
--c++-kinds=+pl : 為C++文件增加函數原型的標籤, 添加 l 讓局部變數也能自動補完
--fields=+iaS : 在標籤文件中加入繼承信息(i)、類成員的訪問控制信息(a)、以及函數的指紋(S)
--extra=+q : 為標籤增加類修飾符。注意,如果沒有此選項,將不能對類成員補全
$ cd ~/.vim/tags
$ ctags -R --sort=1 --c++-kinds=+pl --fields=+iaS --extra=+q --language-force=C++ -f cpp cpp_src
如果你想要針對特定使用之函式庫也能有自動補完功能,那麼也需要針對該函式庫建立相對應的 tag 檔案,舉 Qt4 為例 (只針對 QtCore 的部份建立 tags):
$ cd ~/.vim/tags
$ ctags -R --sort=1 --c++-kinds=+pl --fields=+iaS --extra=+q --language-force=C++ -f qt4Core /Library/Frameworks/QtCore.framework/Headers
4. 編輯你的 ~/.vimrc 檔案
" configure tags - add additional tags here or comment out not-used ones
set tags+=~/.vim/tags/cpp
set tags+=~/.vim/tags/qt4Core
" build tags of your own project with Ctrl-L
map <C-L> :!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
5. 然後就可以開始使用啦,新增局部變數的時候記得
參考資料:
1. C++ code completion - Vim Tips Wiki
2. Vim and Ctags tips and tricks - Stack Overflow
3. The Only Winning Move » Code Completion for Qt4 in Vim - Mac OS X Version
...
No comments:
Post a Comment