刚才试用了一下,用以下方式可行,拿的夕角的egear里的cpp来实验,特意转载分享一下omnicppcomplete - a Vim pluginhttp://qlife113.blogspot.com/2008/07/omnicppcomplete-vim-plugin.html
omnicppcomplete - a Vim plugin [转载]_#Vim



這個令人眼睛一亮的plugin網址在這:http://vim.sourceforge.net/scripts/script.php?script_id=1520 我覺得蠻方便的。

大 多數的vim plugin安裝方式都類同,將vim script放到$HOME/.vim/plugin/或$HOME/vimfiles/plugin/下就可以。如果是壓縮檔,直接抓到$HOME /.vim/下unzip解開就好了,只要路徑對就可以運作。安裝的過程有些繁復。首先要先讓vim偵測到omnicppcomplete的說明文件:
:helptags $HOME/.vim/doc 或 :helptags $HOME/vimfiles/doc
然後參照omnicppcomplete文件裡的詳細安裝步驟。說詳細其實也沒有太多步驟。

首先vimrc裡要有下列設定 :
set nocp
filetype plugin on
再來需設定ctags選項。omnicppcomplete是由ctags產生的資訊來達到自動完成的效果,所以他需要一些額外的選項,產生出來的ctags才能配合運作。注意!如果還沒有建立tags檔是不會有效果的。
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
我直接使用文件中建議的ctags參數,沒有多作研究。我設定到這邊就可以用了,如果沒有順利啟動,請參照附帶的說明文件0rz。

要啟動complete功能,按的功能鍵是Ctrl+X Ctrl+O 兩個組合鍵。上面己經有一張最簡單的功能示例了,注意粉紅色小視窗裡的確顯示出了myobject的成員。

目 前由於tags檔格式限制,不支援單純尋找樣板與static member,所以沒有辦法達到MS VS系列那麼完整的功能性,但還是蠻有用的。在我的環境(Gentoo Linux amd64 + GCC 4.12)需要到/usr/lib64/gcc/x86_64-pc-linux-gnu/4.1.2/include去產生tags檔。如果是在不同的 OS上,應該會有不一樣的路徑。產生好了之後要在vimrc裡加上以下內容("開頭的是註解,就不用管了):
"告訴vim去看這個tags檔,stl.tags這個檔名可以自訂
set tags+=~/stl.tags
"下一行理由請參考說明文件,我還不太懂 0rz
let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]
假如你的編譯器並不是gcc,那這個設定原則上就沒有用。可能需要參考從SGI STL建立tags的方法,omnicppcomplete的文件裡頭也有說,我用不到,這邊就不摘錄了。

當我看到std::string的methods在我的面前一字排開的畫面,我眼淚都快流下來了!omnicppcomplete - a Vim plugin [转载]_#Vim_02
omnicppcomplete還真的相當萬能,(omni有萬能的意味)連python也可以很方便的支援!
omnicppcomplete - a Vim plugin [转载]_#Vim_03對 python語言的支援相當強大,圖中可以看到不僅顯示每一個成員的型態,還可以直接查library reference手冊的內容。只是要啟動auto complete的功能之前,請注意你已經import了必需的模組,並且處在正確的名稱空間,不然Ctrl+X Ctrl+O按到鍵盤壞掉可能也沒有東西出來。

我還沒有試驗過其它的功能。下面是一些官方的screenshot,值得一看。
http://vissale.neang.free.fr/Vim/OmniCppComplete/ScreenShots/screenshots.htm