弄了個vim對c++的補全,主要參考自:
http://vim.wikia.com/wiki/c%2b%2b_code_completion
首先确定vim編輯.cc或者.cpp檔案時目前自動補全函數,在指令模式下輸入
:set omnifunc?
如果得到的結果為:omnifunc=ccomplete#complete,說明有必要進行以下的操作以實作針對c++的自動補全
1
首先安裝omnicppcomplete,參見:
安裝的過程很簡單,與大多數vim插件一樣,cd到~/.vim/目錄解壓所下載下傳的檔案即可
2在~/.vim/目錄下建立tags子目錄
3建立stdc++
對應的tags:
a)首先下載下傳經高手修改定制的libstdc++頭檔案,可以到這裡下載下傳:
并将其解壓到~/.vim/tags
b) 運作以下指令
4按照步驟3為其他庫建立tags,我選擇了opengl
與 fltk,下面為opengl對應的指令, fltk類似
5修改~/.vimrc檔案
在其中加入以下内容:
注:我自己的.vimrc與上文不太一樣,因為我嫌ctrl與f12離得太遠不好操作,将健映射改為:
nmap <silent> <leader>uc :!ctags -r --c++-kinds=+p
--fields=+ias --extra=+q .<cr>
另外我的.vimrc檔案裡原來還有以下内容:
"上面的映射都是在插入模式下的映射,解釋如下:
"- 如果下拉菜單彈出,回車映射為接受目前所選項目,否則,仍映射為回車;
"- 如果下拉菜單彈出,ctrl-j映射為在下拉菜單中向下翻頁。否則映射為ctrl-x ctrl-o;
"- 如果下拉菜單彈出,ctrl-k映射為在下拉菜單中向上翻頁,否則仍映射為ctrl-k;
"- 如果下拉菜單彈出,ctrl-u映射為ctrl-e,即停止補全,否則,仍映射為ctrl-u;
6檢驗
用vim打開cpp檔案,輸入
std::
将得到std命名空間的所有标示符,按ctrl+n或者ctrl+p選擇
繼續輸入std::vector vi,然後輸入
vi.
vim将自動提示其成員