VIM安裝YCM插件

折騰了兩天,終於好了html

1。配置VIMpython

  (1)下載相關插件linux

sudo apt-get install git
sudo apt-get install build-essential cmake

  sudoapt-get installlibncurses5-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

   (2)安裝支持python的VIMc++

  首先保證VIM已經卸載git

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

  而後下載並配置編譯,注意路徑和本身的匹配github

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/vim81

  安裝vim

cd ~/vim
sudo make install

  安裝完後測試VIM是否支持pythonruby

    命令模式下輸入:echo has("python") || has("python3"),結果是1就表明成功了。bash

     vim --version | grep python顯示的python前面確實是加號。curl

 

2。安裝VIM插件管理工具 pathogen

mkdir -p ~/.vim/autoload ~/.vim/bundle && 
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

  在.vimrc中添加

execute pathogen#infect()
syntax on
filetype plugin indent on

  這時~/.vim的目錄結構以下

├── autoload
│   └── pathogen.vim
└── bundle

  autoload存放的pathogen.vim是一個插件(插件的就是一個腳本),.vim中 execute pathogen#infect() 會調用 pathogen.vim,

  pathogen.vim會調用 bundle中的插件。

  咱們接下來須要作的就是把須要安裝的插件放到 bundle目錄下。

 

3. 下載並安裝YCM

  (1)下載YCM到bundle目錄下

git clone --recursive git://github.com/Valloric/YouCompleteMe ~/.vim/bundle

    若是執行該命令沒報錯, 就ok了. 可是中途有可能會斷掉, 能夠 cd 到 YouCompleteMe, 而後反覆用以下命令再次進行下載:

git submodule update --init --recursive

    YCM大概有229M

    使用以下命令查看YCM大小

du -sh ~/.vim/bundle/YouCompleteMe

  (2)安裝YCM

./install.py --clang-completer

  這個指令只適合64位系統,32位的須要本身下載clang並編譯(很麻煩)。

 

4. 配置YCM

  .vimrc中輸入

" YouCompleteMe
" Python Semantic Completion
let g:ycm_python_binary_path = '/usr/bin/python3'
" C family Completion Path
let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
" 跳轉快捷鍵
nnoremap <c-k> :YcmCompleter GoToDeclaration<CR>|
nnoremap <c-h> :YcmCompleter GoToDefinition<CR>|
nnoremap <c-j> :YcmCompleter GoToDefinitionElseDeclaration<CR>|
" 中止提示是否載入本地ycm_extra_conf文件
let g:ycm_confirm_extra_conf = 0
" 語法關鍵字補全
let g:ycm_seed_identifiers_with_syntax = 1
" 開啓 YCM 基於標籤引擎
let g:ycm_collect_identifiers_from_tags_files = 1
" 從第2個鍵入字符就開始羅列匹配項
let g:ycm_min_num_of_chars_for_completion=2
" 在註釋輸入中也能補全
let g:ycm_complete_in_comments = 1
" 在字符串輸入中也能補全
let g:ycm_complete_in_strings = 1
" 註釋和字符串中的文字也會被收入補全
let g:ycm_collect_identifiers_from_comments_and_strings = 1
" 彈出列表時選擇第1項的快捷鍵(默認爲<TAB>和<Down>)
let g:ycm_key_list_select_completion = ['<C-n>', '<Down>']
" 彈出列表時選擇前1項的快捷鍵(默認爲<S-TAB>和<UP>)
let g:ycm_key_list_previous_completion = ['<C-p>', '<Up>']
" 主動補全, 默認爲<C-Space>
"let g:ycm_key_invoke_completion = ['<C-Space>']
" 中止顯示補全列表(防止列表影響視野), 能夠按<C-Space>從新彈出
"let g:ycm_key_list_stop_completion = ['<C-y>']

  注意這句:

let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'

  這裏須要建立 .ycm_extra_conf.py,並輸入

flags = [
'-Wall',
'-Wextra',
'-Werror',
'-Wno-long-long',
'-Wno-variadic-macros',
'-fexceptions',
'-DNDEBUG',
'-std=c99',
'-x',
'c',
'-I',
'/usr/include',
'-isystem',
'/usr/lib/gcc/x86_64-linux-gnu/5/include',
'-isystem',
'/usr/include/x86_64-linux-gnu',
'-isystem'
'/usr/include/c++/5',
'-isystem',
'/usr/include/c++/5/bits'
]
def FlagsForFile(filename):
    return {'flags': flags}

  到此 YCM 可用。

 

  此外.ycm_extra_conf.py很重要,能夠參考這個文檔:https://github.com/Valloric/YouCompleteMe#option-2-provide-the-flags-manually

 

參考博客:

https://www.cnblogs.com/Harley-Quinn/p/6418070.html

https://blog.csdn.net/andre617/article/details/53496490#%E8%84%9A%E6%B3%A8

https://github.com/Valloric/YouCompleteMe/issues/2901

相關文章
相關標籤/搜索