微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VIM安装YCM插件

折腾了两天,终于好了

1。配置VIM

  (1)下载相关插件

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的VIM

  首先保证VIM已经卸载

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

  然后下载并配置编译,注意路径和自己的匹配

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

  安装

cd ~/vim
sudo make install

  安装完后测试VIM是否支持python

    命令模式下输入:echo has("python") || has("python3"),结果是1就代表成功了。

     vim --version | grep python显示的python前面确实是加号。

 

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
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个键入字符就开始罗列匹配项

  注意这句:

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,/usr/include/x86_64-linux-gnu,-isystem
/usr/include/c++/5,/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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐