使用spacevim安装youcompleteme

在~/.SpacVim.d/init.toml下增加该插件

[[custom_plugins]]
name="Valloric/YouCompleteMe"
merge=0

重新输入vim 之后, ycm就会自动下载安装了,等下载安装完毕之后,可以在./.cache/vimfiles/repos/github.com/Valloric/YouCompleteMe
找到对应的文件

编译YouCompleteMe

进入到./.cache/vimfiles/repos/github.com/Valloric/YouCompleteMe/doc文件夹下,打开youcomplete.txt文件,找到441行开始的关于linux-64 bit的安装指引,前面关于vundle如何下载ycm的过程跳过到关于ubuntu16.04的指引

- Ubuntu 14.04:

  sudo apt install build-essential cmake3 python3-dev

- Ubuntu 16.04 and later:

  sudo apt install build-essential cmake python3-dev

Compiling YCM **with** semantic support for C-family languages:
>
  cd ~/.vim/bundle/YouCompleteMe
  python3 install.py --clang-completer
<

尽量按照这个官方文档来,按照网上的走很容易出错的,需要注意的是,vim的源码编译的时候对应python的特新支持只需要开启对python3,不要开启python2,两者开启会导致ycm找不到python,只开python2在我的机器上编译不过,后来按照这个文档使用python3进行重新编译才过,另一方面,直接使用apt install cmake 版本太低,一定要下载cmake3的源码编译安装,要不然可能会失败, 中间需要下载某个库, 不知道是公司的网不好还是怎么地翻墙后下载解决了

最后python3 执行的目录在 ~/.cache/vimfiles/repos/github.com/Valloric/YouCompleteMe

执行完install.py脚本之后,还需要对ycm进行符号配置,在~/.cache/vimfiles/repos/github.com/Valloric/YouCompleteMe/下建立cpp文件夹,在该文件夹下面创建一个名为.ycm_extra_conf.py的文件,文件内容如下

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

可以看到都是一些在编译的时候常见的options,-isystem 是用来查找头文件目录的,文件目录的位置根据自己的系统进行改变
然后设置全局变量,指向该文件位置,在~/.SpaceVim.d/autoload/下创建config.vim,往其中添加如下内容

func! config#after() abort
    let g:ycm_global_ycm_extra_conf='/home/yishen/.cache/vimfiles/repos/github.com/Valloric/YouCompleteMe/cpp/.ycm_extra_conf.py'
    let g:ycm_server_python_interptreter='/usr/lib/python3.7'
    set norelativenumber
endf

最后在 ~/.SpaceVim.d/init.toml中调用该函数

[options]
bootstrap_after="config#after"

此时使用vim 打开一个cpp文件,将光标移动到变量上,使用如下命令,可以进行跳转

:YcmCompleter Goto

自动生成配置文件

ycm的运行需要使用到配置文件,从而设定gcc或者clang编译器会使用到的符号,项目复杂的时候,像上面手动配置是很困难的,索性有人写了插件rdnetto/YCM-Generator,可以根据makefile等生成,在init.toml中加入如下语句安装改插件:

[[custom_plugins]]
name = "rdnetto/YCM-Generator"
merged = 0

该插件安装完成后,使用vim 打开项目,使用:YcmGenerateConfig就可以在当前目录下生成ycm配置文件,生成文件的方式是检查当前目录下是否有Makefile 或者是autotool的configure文件等,然后使用他们生成符号文件。
ycm加载配置文件的时候是在打开文件的时候,每打开一个新的文件,会加载该文件所在目录下的.ycm_extra_conf.py文件,如果没有找到,就会到上级目录去找,如果都没有最后会去加载全局的ycm配置文件,使用:YcmDebugInfo可以看到当前ycm使用的配置文件,以及Flag

捕获.PNG

参考:
https://www.jianshu.com/p/5aaae8f036c1
https://blog.csdn.net/xiaojun111111/article/details/50970188

你可能感兴趣的:(使用spacevim安装youcompleteme)