Ubuntu 16.04 64位安裝YouCompleteMe


之前記錄在OneNote上感覺有點亂,而且不適合保存shell,這次重新安裝又出問題了,干脆寫篇博客記錄。

從零開始

1、git(用來下載vim和相關插件)

sudo apt-get install git

2、cmake(用來編譯clang-llvm)

sudo apt-get install build-essential cmake

3、vim,這里手動編譯vim,因為需要python支持,直接apt-get的話會遇到很多麻煩

過程參考https://github.com/Valloric/YouCompleteMe/wiki/Building-Vim-from-source

先安裝依賴項,注意,Ubuntu 16.04是liblua5.1-dev而不是lua5.1-dev

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 \
    python3-dev ruby-dev lua5.1 liblua5.1-dev libperl-dev git

如果已經有vim的話需要移除它

sudo apt-get remove vim vim-runtime gvim
sudo apt-get remove vim-tiny vim-common vim-gui-common vim-nox

然后就是Ubuntu的特別之處,如果要使用python,配置目錄可能會有和機器相關的名字,我的是

所以我的配置參數如下:

cd ~
git clone https://github.com/vim/vim.git
cd vim
./configure --with-features=huge \
            --enable-multibyte \
            --enable-rubyinterp=yes \
            --enable-pythoninterp=yes \
            --with-python-config-dir=/usr/lib/python2.7/config-x86_64-linux-gnu \
            --enable-python3interp=yes \
            --with-python3-config-dir=/usr/lib/python3.5/config-3.5m-x86_64_linux-gnu \
            --enable-perlinterp=yes \
            --enable-luainterp=yes \
            --enable-gui=gtk2 --enable-cscope --prefix=/usr
make VIMRUNTIMEDIR=/usr/share/vim/vim80

然后直接安裝了

cd ~/vim
sudo make install

相反的,卸載需要保留vim文件夾並且安裝checkinstall

sudo apt-get install checkinstall
cd ~/vim
sudo checkinstall

安裝成功后,打開vim,命令模式下輸入:echo has("python") || has("python3"),結果是1就代表成功了。

之前一次由於沒有針對Ubuntu 16.04更改配置,導致vim支持沒有安裝,雖然vim --version | grep python顯示的python前面確實是加號。

 4、Vundle (用來管理vim插件)

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

至於.vimrc的內容見原地址 https://github.com/VundleVim/Vundle.vim

在.vimrc的Vundle begin()和end()之間加上 Plugin 'Valloric/YouCompleteMe',然后vim命令:PluginInstall

由於YouCompleteMe有223M左右,所以需要耐心等待,可以時不時用命令du -s ~/.vim/bundle/YouCompleteMe觀察文件夾大小。

5、直接安裝YCM

./install.py --clang-completer

它會自動下載clang 3.9.0,也可以手動到http://releases.llvm.org/download.html 下載預編譯的二進制文件,愛折騰的可以直接下源碼,然后cmake編譯。

YCM安裝完成,現在在.vimrc中加入以下內容(此處直接參照博客 http://www.mikewootc.com/wiki/tool/sw_develop/vim_ycm_ubuntu_1604.html)

" YouCompleteMe
set runtimepath+=~/.vim/bundle/YouCompleteMe
let g:ycm_collect_identifiers_from_tags_files = 1           " 開啟 YCM 基於標簽引擎
let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注釋與字符串中的內容也用於補全
let g:syntastic_ignore_files=[".*\.py$"]
let g:ycm_seed_identifiers_with_syntax = 1                  " 語法關鍵字補全
let g:ycm_complete_in_comments = 1
let g:ycm_confirm_extra_conf = 0
let g:ycm_key_list_select_completion = ['<c-n>', '<Down>']  " 映射按鍵, 沒有這個會攔截掉tab, 導致其他插件的tab不能用.
let g:ycm_key_list_previous_completion = ['<c-p>', '<Up>']
let g:ycm_complete_in_comments = 1                          " 在注釋輸入中也能補全
let g:ycm_complete_in_strings = 1                           " 在字符串輸入中也能補全
let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注釋和字符串中的文字也會被收入補全
let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
let g:ycm_show_diagnostics_ui = 0                           " 禁用語法檢查
inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>" |            " 回車即選中當前項
nnoremap <c-j> :YcmCompleter GoToDefinitionElseDeclaration<CR>|     " 跳轉到定義處
"let g:ycm_min_num_of_chars_for_completion=2                 " 從第2個鍵入字符就開始羅列匹配項

關鍵是配置文件.ycm_extra_conf.py,包含了補全的系統頭文件和源文件出處。

在這里添加需要包含的目錄,只需要修改flags

到這里基本YCM就配置好了,Ctrl+Space彈出補全對象,Ctrl+J跳轉至定義處,這里暫時只添加了標准庫,因為有些函數是一層層的調用,如果要看底層實現,可以學習下ctags的使用,畢竟YCM最大的優點是補全的同時還能非常流暢地編輯,包含太多可能導致補全變慢。

而且.ycm_extra_conf.py可以在當前目錄配置,YCM是先在當前目錄查找再網上走一直遞歸到找到為止,並且只會加載一次。

更多內容參考原地址 https://github.com/snakeleon/YouCompleteMe-x86

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM