以前記錄在OneNote上感受有點亂,並且不適合保存shell,此次從新安裝又出問題了,乾脆寫篇博客記錄。html
從零開始python
一、git(用來下載vim和相關插件)linux
sudo apt-get install git
二、cmake(用來編譯clang-llvm)git
sudo apt-get install build-essential cmake
三、vim,這裏手動編譯vim,由於須要python支持,直接apt-get的話會遇到不少麻煩github
過程參考https://github.com/Valloric/YouCompleteMe/wiki/Building-Vim-from-sourceshell
先安裝依賴項,注意,Ubuntu 16.04是liblua5.1-dev而不是lua5.1-devubuntu
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的話須要移除它vim
sudo apt-get remove vim vim-runtime gvim sudo apt-get remove vim-tiny vim-common vim-gui-common vim-nox
而後就是Ubuntu的特別之處,若是要使用python,配置目錄可能會有和機器相關的名字,個人是ruby
因此個人配置參數以下:bash
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前面確實是加號。
四、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觀察文件夾大小。
五、直接安裝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