想讓你的vim具有C/CPP代碼補全功能?推薦您使用YouCompleteMe工具。配置雖然稍顯麻煩,但在我的一步步說明之下,您一定能夠做的非常好。
首先提一下幾個關鍵的工具以及其鏈接:
Vundle:它是一個vim的插件管理器,非常好用,要安裝YouCompleteMe首先需要安裝Vundle。
YouCompleteMe:代碼補全工具。
CMake, llvm, clang等一些安裝YouCompleteMe依賴工具。
其實呢,所有的安裝步驟在Vundle,以及YouCompleteMe兩個地址上面已經說的很透徹了,但是因為第一次安裝,您可能沒有太多經驗,看到這么多需要安裝的工具感到頭大。下面我們一步一步來操作,我相信按照下面的操作,您一定能夠順利的完成代碼補全功能。
首先,您要保證您的vim版本號要高於7.3.584,您可以通過在終端輸入:
vim --version
來查看您的vim的版本號。如果沒有vim,您需要自己安裝。
第二步,安裝cmake
sudo apt-get install build-essential cmake
第三步,安裝 llvm 和 clang
到 www.llvm.org 下載相應版本的llvm和clang,因為我用的是ubuntu 14.04 64bit的系統所以我直接下載的pre-build binary版本的而不需要下載源碼再自己重新編譯了。省去了不少麻煩。
下載完成后,直接將下載后的壓縮文件解壓,並進入其目錄
tar zxvf clang+llvm-3.7.0-amd64-Ubuntu-14.04..tar.gz cd clang+llvm-3.7.0-amd64-Ubuntu-14.04.
其中 *.tar.gz就是您所下載的壓縮文件。
運行命令:
sudo cp -R * /usr/
將目錄里的所有文件拷貝到相應的系統目錄下,然后再配置一下軟鏈接:
sudo ln -sf /usr/bin/clang++ /etc/alternatives/c++
其中 “-sf”中 “s”代表了軟鏈接,“f”即為force的意思。
運行:clang --version 如果您看到了它的版本號,就說明 llvm 和 clang配置好了。
第四步:安裝Vundle,安裝過程請參考 https://github.com/VundleVim/Vundle.vim#about ;P.S. :如果您是第一次安裝vim,可能需要自己創建vim的配置文件,它是在 “~/ ” 目錄下的的一個隱藏文件 .vim 前面的“小點”就說明這是一個隱藏的目錄, 用 ls -a才能查看,如果沒有,請創建該目錄。即:mkdir ~/.vim
配置好Vundle , 請打開主目錄下的.vimrc文件,這個文件是按照之前安裝vundle時的步驟配置好的,請在call vundle#begin() 和 call vundle#end() 在之間添加 Plugin 'Valloric/YouCompleteMe', 另外,把begin() 和 end()之間除了Plugin 'VundleVim/Vundle.vim' 和 Plugin 'Valloric/YouCompleteMe'之外的其他PlugIn 都注釋掉把,感覺沒什么卵用。
第五步:利用Vundle安裝插件
非常簡單,在終端中打開vim, 輸入" :PluginInstall ", 等待Vundle安裝完畢。這可能需要花費一段時間。當vim的底欄顯示:Done!(注意不是Done with error !!!) 就表示安裝成功。
第六步:編譯YouCompleteMe, 為了不保證出錯,我用的是完全安裝的方法。
cd ~ mkdir ycm_build cd ycm_build
因為我要支持C/CPP的語義支持,我選擇:
cmake -G "Unix Makefiles" -DUSE_SYSTEM_LIBCLANG=ON . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
這里,我選擇使用系統的libclang,因為我們也從官網下載了LLVM+Clang(該目錄下有 bin, lib, include 等文件夾),我們也可以執行:cmake -G "Unix Makefiles" -DPATH_TO_LLVM_ROOT=~/ycm_temp/llvm_root_dir . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp 其中“ ~/ycm_temp/llvm_root_dir”就是我們解壓過的文件的根目錄
第七步:生成
make ycm_support_libs
到此為止,基本的配置工作就完成了,但是還有一點瑕疵:#include <iostream>, #include <stdio> vector, 什么的都不能補全,這是因為這些頭文件的路徑沒有被找到,下面的工作就是要讓YouCompleteMe找到這些頭文件,而且,以后有什么庫文件,比如OpenCV,OPenGL什么的,都可以按照這個方法添加。
打開 ~/下的.vimrc文件,確保查看是否有這樣一條配置:
let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
如果沒有,請修改.ycm_extra_conf.py的路徑是正確的。
打開 ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py
vim ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py
您可以在flags[ * ]數組的后面添加你想要的路徑,例如: stdio.h等C語言的頭文件包含在/usr/include中,那么您需要添加這樣一條
'-isystem',
‘/usr/include’,
注意,不要忘記后面的“,”。
需要CPP的補全,就需要添加:
'-isystem',
‘/usr/include/c++/4.7’,
需要什么,就添加什么,so easy .
