YCM的安裝與配置

花了好幾天的時間,總算把YCM裝上了。期間遇到了各類問題,主要仍是由於剛進linux,對linux環境不熟, 命令資料等查了半天。固然,YCM也廣泛被認爲是一種安裝配置複雜,但使用起來超簡單的插件。html

 

好,廢話很少說。開始幹活。(英語好的請無視後面內容,直接狂戳它:https://github.com/Valloric/YouCompleteMe,YCM在git的上主頁,詳細介紹瞭如何安裝配置YCM。遺憾的是,我徹底按git教程的步驟沒成功,還得作一點點小修改,我總結到了最後面。)python

 

第一步,安裝帶python選項的vimlinux

 

YCM須要VIM7.3.584以上且支持python。Ubuntu中是VIM7.4但沒有python。查看你的vim是否支持python,運行命令:vim --version。若是出現+python,則表示支持。若是是-python,抱歉,可能你得從源碼編譯安裝了。c++

 

1. 編譯Vim以前,須要下載編譯的相關工具和一些庫(都要下載安裝好,否則後面可能會出現問題)git

sudo apt-get install libncurses5-dev libgnome2-dev libgnomeui-dev libgtk2.0-dev libatk1.0-dev libbonoboui2-dev libcairo2-dev libx11-dev libxpm-dev libxt-dev python-dev ruby-dev mercurialgithub

 

2. 用apt-get卸載以前的vim。ubuntu

 

3. 下載新版本vim7.4源碼,網址爲:(ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2)vim

tar -xjvf vim-7.4.tar.bz2ruby

解壓至 ~/downloads/vim74/python2.7

 

4. cd ~/downloads/vim74/

設置Vim源碼的編譯屬性

./configure --with-features=huge --enable-pythoninterp --with-python-config-dir=/usr/lib/python2.7/config  --enable-cscope --enable-multibyte --prefix=/usr

須要從新配置可 輸入 make distclean #清理一下上一次編譯生成的全部文件。

其中參數說明以下:

  • --with-features=huge:支持最大特性
  • --enable-pythoninterp:啓用Vim對python編寫的插件的支持
  • --enable-multibyte:多字節支持 能夠在Vim中輸入中文
  • --enable-cscope:Vim對cscope支持
  • --with-python-config-dir=/usr/lib/python2.7/config-i386-linux-gnu/ 指定 python 路徑
  • --prefix=/usr:編譯安裝路徑

這裏值得注意的是,你在第一步時必定要先安裝好python-dev。否則後面make install 後雖然成功了,可是vim --version後仍是會出現-python。這裏的關鍵在於/usr/lib64/python2.6/config中要用config.c這個文件,若是你沒安好python-dev的話就沒這個文件。(我掉到這坑爬了很久纔出來。。因此第一步仍是很重要的)

sudo make VIMRUNTIMEDIR=/usr/share/vim/vim74

sudo make install

 

第二步,編譯安裝llvm-clang(若是你不須要ycm支持C/C++語義補全。  直接到下一步)

按照git中的教程,有兩種方法,一種是下載現成編譯好的二進制代碼,問題是給出的連接中只有有限版本的二進制包,如CentOS就沒有,並且llvm-clang3.3+ 的只有Ubuntu64位,沒有32位的。第二種方法是下載源碼包,自行編譯。聽說編譯時間暴慢,我還沒試過,下次在CentOS下是成功了再寫上來。

 

我爲了省事,下了個llvm-clang3.2  Ubuntu12.04 32位已編譯好的二進制包,但個人Ubuntu 14.04 32位的,大家根據本身系統看着辦吧,若是是CentOS可能就得本身編譯安裝了。

 

下好後解壓到~/ycm_tmp

mkdir ~/ycm_tmp

tar -xvf  clang陛3.2-x86-linux-ubuntu-12.04.tar.gz

 

第三步,利用Vundle下好YouCompleteMe

Vundle是個vim插件管理器。

在裝好Vundle後,在你的.vimrc中裏面添加

 

Plugin 'Valloric/YouCompleteMe'

 

以後退出.vimrc, 在打開vim運行:

BundleInstall 

 

這裏Vundle可能會運行比較久,由於YCM相對於其它插件仍是比較大的Give it time(我大概用了半個小時,-.-||)。

 

以後在你的Vundle文件下就有會YouCompleteMe文件夾了。

 

第四步,編譯YouCompleteMe

 

1. 首先要安裝好cmake,由於YCM須要用到

sudo apt-get install cmake

2. 建好文件夾ycm_build,進入(待會這個文件夾ycm_build存放cmake時產生的文件, 名字必須爲ycm_build,後面若是你要用自帶的.ycm_extra_config.py的話)

cd ~
mkdir ycm_build
cd ycm_build

 3. 若是你不須要ycm支持C/C++語義補全,以下(注意中間有個點 "." 表明當前目錄):

cmake -G "Unix Makefiles" . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
make ycm_support_libs
 

   若是須要支持C/C++語義補全,以下:

cmake -G "Unix Makefiles"  -DEXTERNAL_LIBCLANG_PATH=~/ycm_tmp/clang+llvm-3.2-x86-linux-ubuntu-12.04/lib/libclang.so .   ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
make ycm_support_libs
 

 其中-DEXTERNAL_LIBCLANG_PATH就是第二步中你的llvm-clang 下的libclang.so文件。

 其實git教程中不是這樣的,它只要llvm-clang根目錄(也就是包含了include,lib,bin等文件的目錄)就能夠了。但我這樣作雖然編譯成功了,但仍是不能支持c/c++中的語義補全(如成員變量補全)。這個坑我又爬了大半天。。。

 git教程中的應該是這樣(反正我這樣作是沒搞定。。 大家本身看着辦):

cmake -G "Unix Makefiles"  -DEXTERNAL_LIBCLANG_PATH=~/ycm_tmp/clang+llvm-3.2-x86-linux-ubuntu-12.04/ .   ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
make ycm_support_libs

 

    到此爲止,你的~/ycm_build中應該會出現一些文件和文件夾(以前是空目錄)。說明ycm已經裝好了,最後一步就是配置你的.vimrc啦!

  

第五步,配置YouCompleteMe

  YCM須要.ycm_extra_conf.py這個文件方能很好的工做。其實它已經存在啦,你將它拷貝到你的項目工程目錄(或者更上層目錄,這都無所謂,反正是遞歸查找,個人就直接拷到了~/下了)並作一丟丟修改就完成了!!

  cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py      ~/.ycm_extra_conf.py

 

  編輯~/.ycm_extra_conf.py

  在 flags中加入'-I' /usr/include/c++/4.8    和 '-I'  '/usr/include/i386-linux-gnu/c++/4.8'

  而後找到

try:
final_flags.remove( '-stdlib=libc++' )
except ValueError:
pass

  而且所有註釋。

     最後一步,在你的.vimrc中加入這個.ycm_extra_conf.py文件在你係統中的路徑。個人以下

 

let g:ycm_global_ycm_extra_conf='~/.ycm_extra_conf.py'

  至此,大功告成!!打開你的vim試試效果吧。

 

 

附: 安裝過程當中出現的問題與解決方案:

Q1: 源碼編譯安裝支持python的vim失敗。雖然編譯安裝成功了,可是在vim  --version中仍是出現了-python

A1: 查看你的/usr/lib64/python2.6/config(你對應的python目錄),看看裏面是否有config.c。若是沒有,請sudo apt-get install python-dev。第一步中那一大堆軟件仍是頗有必要裝的.

Q2:利用Vundle下載YCM時遲遲沒反應。

A2: 慢慢等吧。網速很差還可能下載失敗。

Q3:YCM已經安裝好了,可是沒有語義補全功能。好比不能補全成員變量等。

A3:

  緣由1:在VIM中運行YcmDiags,看看有沒有什麼warn或error,個人就出現了bits/c++config.h can not found.

  運行命令 locate bit/c++config.h

  找到相應路徑。編輯~/.ycm_extra_conf.py

  在 flags中加入響應路徑。如個人就是: '-I' /usr/include/c++/4.8    和 '-I'  '/usr/include/i386-linux-gnu/c++/4.8'

  具體緣由請移步http://stackoverflow.com/questions/9201521/g-4-6-issue-no-bits-cconfig-h-file-as-required-by-the-header-cstring

 

  緣由2:

  在編譯YCM的時候,是這樣的(沒有包含具體的libclang):

  cmake -G "Unix Makefiles"  -DEXTERNAL_LIBCLANG_PATH=~/ycm_tmp/clang+llvm-3.2-x86-linux-ubuntu-12.04/ .   ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp

 改成這樣編譯試試(注意應當把當前的ycm_build刪除再新建一個空的)
  cmake -G "Unix Makefiles"  -DEXTERNAL_LIBCLANG_PATH=~/ycm_tmp/clang+llvm-3.2-x86-linux-ubuntu-12.04/lib/libclang.so .   ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
  

參考連接:

  http://www.cnblogs.com/zhongcq/p/3630047.html

  https://github.com/Valloric/YouCompleteMe

  http://www.cnblogs.com/csuftzzk/p/3435710.html

  http://www.cnblogs.com/weishun/p/tencent-shixi-2014-08-19-vimrc-youcompleteme.html

相關文章
相關標籤/搜索