Ubuntu安裝vim自動補全插件--YouCompleteMe

1.首先安裝vim:

sudo apt-get install vim-gtk

2.安裝完成後,查看vim對python的支持

vim --version | grep python

 

發現是有對Python3的支持而沒有對Python2的支持,如果需要換成對python2的支持的話,可以安裝py2包:

sudo apt-get install vim-nox-py2

安裝完成後,再查看一下,可以發現現在換成對Python2的支持了。

 

如果需要的切換的話可以輸入命令:

sudo update-alternatives --config vim

輸入編號切換就可以了。

 

3.安裝官方文檔上說的,安裝CMake和python-dev。

sudo apt-get install build-essential cmake
sudo apt-get install python-dev python3-dev


 

4.安裝YouCompleteMe

1.首先安裝vim的擴展管理器Vundle,利用Vundle來安裝YCM

 

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

安裝完成後在終端輸入:
gedit  ~/.vimrc打開配置文件
 
將下面的配置複製到vimrc頂部(如果沒有vimrc自己創建一個)

 

 

 

set nocompatible              " be iMproved, required  

filetype off                  " required  

"設置Vundle的運行路徑並初始化  
set rtp+=~/.vim/bundle/Vundle.vim  
call vundle#begin()  
" Vundle安裝位置與插件路徑不同時,需要Vundle插件的路徑  
"call vundle#begin('~/some/path/here')  

"------------------要安裝的插件不能寫在此行前!------------------ 

 

"Vundle對自己的調用,不可刪去  
Plugin 'VundleVim/Vundle.vim'  
  
"以下是所支持的各種不同格式的示例  
"需要安裝的插件應寫在調用的vundle#begin和vundle#end之間  
  

"如果插件託管在Github上,寫在下方,只寫作者名/項目名就行了  

 

"YouCompleteMe插件安裝 

Plugin 'Valloric/YouCompleteMe'  

 

"Plugin 'majutsushi/tagbar'  
"Plugin 'vim-syntastic/syntastic'  
"Plugin 'vim-airline/vim-airline-themes'  
"Plugin 'vim-airline/vim-airline'  
  
"如果插件來自vim-scripts(官方),寫插件名就行了  
" Plugin 'L9'  
  
"如果Git倉庫不在Github上,需要提供完整的鏈接  
" Plugin 'git://git.wincent.com/command-t.git'  
  
"本地的插件需要提供文件路徑  
" Plugin 'file:///home/gmarik/path/to/plugin'  

"一定要確保插件就在提供路徑的文件夾中(沒有子文件夾,直接在這層目錄下)  
  
"運行時目錄的路徑  
"Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}  
  
"避免插件間的命名衝突  
"Plugin 'ascenator/L9', {'name': 'newL9'}  
  
"------------------要安裝的插件不能寫在此行後!------------------  
call vundle#end()            " required  
filetype plugin indent on    " required  
"要忽略插件縮進更改,請改用:  
"filetype plugin on  
"  
" 安裝插件的相關指令  
":PluginList            - 列出已安裝插件  
":PluginInstall         - 安裝新添加的插件;添加`!`或使用`:PluginUpdate`來更新已安裝插件  
":PluginSearch xxx      - 尋找名字帶有xxx的插件;添加`!`刷新本地緩存  
":PluginClean           - 刪除已經從列表移除的插件;添加`!`靜默卸載  
":h                     - 幫助和說明文檔   
"Vundle的設置到此爲止了  
"


然後將YouCompleteMe插件先直接下載在~/.vim/bundle/下,在線安裝會比較慢,且容易失敗。
git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle  
git clone https://github.com/Valloric/YouCompleteMe.git ~/.vim/bundle/YouCompleteMe  
cd ~/.vim/bundle/YouCompleteMe  
git submodule update --init --recursive

 

 

 

 

然後使用:PluginInstall命令 就可以開始用Vundle進行管理了。

 

 

打開vim,按Esc鍵進入末行模式,輸入PluginInstall進行安裝

YouCompleteMe配置

 

" 自動補全配置
set completeopt=longest,menu "讓Vim的補全菜單行爲與一般IDE一致(參考VimTip1228)
autocmd InsertLeave * if pumvisible() == 0|pclose|endif "離開插入模式後自動關閉預覽窗口
inoremap <expr> <CR>       pumvisible() ? "\<C-y>" : "\<CR>" "回車即選中當前項
"上下左右鍵的行爲 會顯示其他信息
inoremap <expr> <Down>     pumvisible() ? "\<C-n>" : "\<Down>"
inoremap <expr> <Up>       pumvisible() ? "\<C-p>" : "\<Up>"
inoremap <expr> <PageDown> pumvisible() ? "\<PageDown>\<C-p>\<C-n>" : "\<PageDown>"
inoremap <expr> <PageUp>   pumvisible() ? "\<PageUp>\<C-p>\<C-n>" : "\<PageUp>"
"youcompleteme  默認tab  s-tab 和自動補全衝突
"let g:ycm_key_list_select_completion=['<c-n>']
"let g:ycm_key_list_select_completion = ['<Down>']
"let g:ycm_key_list_previous_completion=['<c-p>']
"let g:ycm_key_list_previous_completion = ['<Up>']
let g:ycm_confirm_extra_conf=0 "關閉加載.ycm_extra_conf.py提示
let g:ycm_collect_identifiers_from_tags_files=1 " 開啓 YCM 基於標籤引擎
let g:ycm_min_num_of_chars_for_completion=1 " 從第2個鍵入字符就開始羅列匹配項
let g:ycm_cache_omnifunc=0 " 禁止緩存匹配項,每次都重新生成匹配項
let g:ycm_seed_identifiers_with_syntax=1 " 語法關鍵字補全
nnoremap <F5> :YcmForceCompileAndDiagnostics<CR> "force recomile with syntastic
"nnoremap <leader>lo :lopen<CR> "open locationlist
"nnoremap <leader>lc :lclose<CR> "close locationlist
inoremap <leader><leader> <C-x><C-o>
"在註釋輸入中也能補全
let g:ycm_complete_in_comments = 1
"在字符串輸入中也能補全
let g:ycm_complete_in_strings = 1
"註釋和字符串中的文字也會被收入補全
let g:ycm_collect_identifiers_from_comments_and_strings = 0
nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR> " 跳轉到定義處
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章