vim自動補全插件YouCompleteMe


前言

Valloric/YouCompleteMe可以說是vim安裝最復雜的插件之一,但是一旦裝好,卻又是非常好用的。YouCompleteMe簡稱ycm

在安裝折騰的過程中,我再一次的體會到,除了官網教程,百度上的教程都是辣雞,都是坑!

 

安裝准備:

1.確保已經安裝好build-essential 和 cmake 。ycm是編譯型補全插件,這兩個工具是編譯ycm用的。

sudo apt-get install build-essential cmake

2.確保已經安裝好了python-dev 和 python3-dev

sudo apt-get install python-dev python3-dev

3.下載ycm

我們使用vundle插件下載ycm。vundle是管理vim插件的vim插件,安裝很簡單,安裝vundle的教程另附了,大家也可以自行上網搜索。

在vimrc里增加如下語句,讓ycm添加到vundle的管理列表中:

Bundle 'Valloric/YouCompleteMe'
Bunlde 'SirVer/ultisnips'
Bundle 'honza/vim-snippets'

注意!!這里有2個天坑, 'SirVer/ultisnips' 和 'honza/vim-snippets' 這兩個插件在ycm安裝文檔中沒有說明的!我是去了ultisnips的git上才看到。如果不安裝,就會在進入vim的時候報OnBufferRead的錯!

 

然后在vim里執行,下載並安裝列表中的插件。當然了,這里包含了我們剛增加的ycm。這個過程比較漫長,可以需要十來分鍾,耐心等待吧。

:BundleInstall

4.編譯ycm

上面的步驟只是把ycm下載下來了,但是還沒有編譯。使用如下命令編譯ycm。以下的例子,只添加對C++補全的支持。

cd ~/.vim/bundle/YouCompleteMe
./install.py --clang-completer

 對其他語言的支持有,大家可以按需求添加。如果想全部語言都安裝,可以使用./install.py --all

C# support: install Mono and add --omnisharp-completer 
Go support: install Go and add --gocode-completer 
TypeScript support: install Node.js and npm then install the TypeScript SDK with npm install -g typescript.
JavaScript support: install Node.js and npm and add --tern-completer 
Rust support: install Rust and add --racer-completer

5.配置工程

如果上面順利的話,你已經完成了ycm的安裝。最后在vimrc中添加如下快捷鍵方便使用。

let g:UltiSnipsExpandTrigger="<tab>"
let g:UltiSnipsJumpForwardTrigger="<c-b>"
let g:UltiSnipsJumpBackwardTrigger="<c-z>"
" If you want :UltiSnipsEdit to split your window.
let g:UltiSnipsEditSplit="vertical"

 

對於每一個工程,我們可以自定義.ycm_extra_conf.py ,這個文件可以定義自動補全的各種細節,例如搜索什么目錄等等,都可以在里面進行設置。

ycm是依賴clang實現補全的,如果需要c++補全,需要在.ycm_exrea_conf.py文件中添加響應的c++文件路徑。

c++文件路徑詳情可以通過以下命令查詢

echo |clang -std=c++11 -stdlib=libc++ -v -E -x c++ -

以下是在.ycm_exrea_conf.py添加內容的例子

'-isystem','/usr/local/include',

'-isystem','/usr/lib/gcc/x86_64-linux-gnu/4.8/include',

'-isystem','usr/include/x86_64-linux-gnu',

'-isystem','usr/include',

 


免責聲明!

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



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