centos7安装YouCompleteMe

YouCompleteMe

  • 写在前面
  • 准备工作
  • 1. 编译安装python3
  • 2. 编译安装cmake
  • 3. 编译安装clang
  • 4. 下载YouCompleteMe并安装
  • 5. 修改.vimrc文件

写在前面

最近在使用linux操作系统,不可避免的使用vim,而单独使用vim需要一段时间才能熟悉过来,给vim装上一些插件可以为文本编辑带来极大的方便。vim插件中,YouCompleteMe绝对可以算是最难安装的插件之一。我大概捣鼓了两三天才弄好,写一篇博客记录我安装的过程。
我使用Vundle来管理vim插件,许多插件用Vundle来下载很好用,直接在打开.vimrc的时候输入:PluginInstall即可,但是在下载YouCompleteMe和ultisnips的时候频繁出错。ultisnips碰到的问题和解决方案已经在前面的博客写过了,就不再说了。

准备工作

想要安装好YouCompleteMe,需要做的准备工作很多,我大概列一下,也只能是把我碰到的列出来。

所需工具 对应版本
系统 阿里云centos7.6
vim版本 vim8.1(因为我在安装其他插件的时候需要对vim进行升级,所以我进行了更新)
python python2.7.5(系统自带)、python3.6.5(自己安装的)
cmake版本 cmake3.15
clang clang8.0

使用cmake的原因就是clang需要使用cmake来编译,原来的clang使用的configure编译已经不能使用。而cmake和clang我的云服务器上都没有,所以我是现下载,现编译安装。

1. 编译安装python3

       步骤太多,写在另一篇博客里面,链接。安装python3其实在安装YouCompleteMe插件的时候不是必要的,只需要系统原来安装的python2.7足够了。

2. 编译安装cmake

       步骤太多,写在另一篇博客里面,链接

3. 编译安装clang

       步骤太多,也写在另一篇博客里面,链接。安装llvm+clang是为了能够使用插件支持c家族语言代码补全,不是一个必要的步骤。

4. 下载YouCompleteMe并安装

       github下载地址。从github上面下载插件,插件特别大,需要耐心等待。也可以使用如下命令直接下载(下载到go模块的时候经常出现错误,应该是有个网址无法访问,最好在一个能的网络中下载或者使用海外服务器下载)

git clone --recursive https://github.com/ycm-core/YouCompleteMe.git

       加上–recursive可以递归检查每一个子模块,如果不加需要使用下面的命令来检查,效果是一样的.

git submodule update --init --recursive

       只要能下下来,接下来就很简单了。

./install.py  --clang-completer  --gocode-completer

       如果配置go出错,可以先去掉–gocode-completer。等编译完成后

cd ~/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/go/src/golang.org/x/tools/cmd/gopls
export GOPROXY=https://goproxy.io
go build # 系统中要先安装好GO

解决。

5. 修改.vimrc文件

let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py'  "设置全局配置文件的路径
let g:ycm_seed_identifiers_with_syntax=1    " 语法关键字补全
let g:ycm_confirm_extra_conf=0  " 打开vim时不再询问是否加载ycm_extra_conf.py配置
let g:ycm_key_invoke_completion = '' " ctrl + a 触发补全
set completeopt=longest,menu    "让Vim的补全菜单行为与一般IDE一致(参考VimTip1228)
let g:ycm_complete_in_comments = 1 " 在注释中输入也能补全
let g:ycm_complete_in_strings = 1 " 在字符串中也能补全
let g:ycm_semantic_triggers = {
  \   'c' : ['->', '    ', '.', ' ', '(', '[', '&'],
  \     'cpp,objcpp' : ['->', '.', ' ', '(', '[', '&', '::'],
  \     'perl' : ['->', '::', ' '],
  \     'php' : ['->', '::', '.'],
  \     'cs,java,javascript,d,vim,python,perl6,scala,vb,elixir,go' : ['.'],
  \     'ruby' : ['.', '::'],
  \     'lua' : ['.', ':']
  \ }

        我发现好多博客都说 g:ycm_global_ycm_extra_conf的值要选择~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py这个文件,但是我没有找到,我在example文件夹下找到了,并且里面的内容指向的也是c和c++头文件的正确位置,在进行c和c++语法补全的时候也是对的。

       个人使用感受:ycm对c、c++、和python的代码提示挺好的,但是我觉得对其他语言的代码提示也不是太好(有可能是我没有设置好)
       还有很多优秀的vim插件,使用这些插件可以提高我们的编码效率。例如NerdTree、ctags等等,这些插件都可以使用Vundle下载,比下载YouCompleteMe方便多了。

文中都是我个人的理解,如有错误的地方欢迎下方评论告诉我,我及时更正,大家共同进步

你可能感兴趣的:(Linux系统)