在树莓派上安装YCM(YouCompleteMe)

​ 太折腾了!如果你搜索到了这篇文章,建议直接使用SpaceVim作为替代品。

0x0.第一个坑——不支持Python

​ 我的树莓派的系统是基于Debian Stretch的Raspbian Stretch。使用apt-get安装的vim不支持python脚本。你可以通过输入:

1
vim --version | grep python

来检查,如果发现python/python3前面出现了加号,恭喜你,你可以跳过本步骤了。它说明你的vim支持python。如果都是减号,你需要重新编译安装vim了。image-20190302155506139

​ 在安装之前先将vim卸载掉。

1
sudo apt-get remove vim vim-runtime gvim

​ 然后安装编译所需要的包

1
2
3
4
sudo apt-get install libncurses5-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

​ clone vim到目录下

1
2
3
cd ~
git clone https://github.com/vim/vim.git
cd vim

​ configure vim。这一步要注意,YCM插件只能使用python2python3,也就是在指定python目录的时候你只能设置一个。

1
2
3
4
5
6
7
8
9
10
11
12
./configure --with-features=huge 
--enable-multibyte
--enable-rubyinterp=yes
--enable-python3interp=yes
--with-python3-config-dir=/usr/lib/python3.5/config-3.5m-arm-linux-gnueabihf #这里注意检查是否是你的python目录
--enable-perlinterp=yes
--enable-luainterp=yes
--enable-gui=gtk2
--enable-cscope
--prefix=/usr/local

make VIMRUNTIMEDIR=/usr/local/share/vim/vim81

​ 如果以后你想方便卸载掉vim,使用以下命令安装

1
2
3
sudo apt-get install checkinstall
cd ~/vim
sudo checkinstall

​ 否则的话就直接make install好了

1
2
cd ~/vim
sudo make install

​ 到此为止我们完成了vim的编译安装,但这仅仅是第一步。

0x1.下载YCM

​ 可以通过Vundle来下载YCM或者是直接下载源码

1
2
3
4
cd ~/.vim/bundle
git clone --recursive https://github.com/Valloric/YouCompleteMe.git
cd YouCompleteMe
git submodule update --init --recursive

0x2.安装libclang

​ 这一步是为了C家族的语义分析与补全,如果没有这个需求可以直接跳过。

​ 可以通过手动编译安装,可以直接下载编译好的二进制文档。

​ 我这里选择的是直接下载了编译好的二进制文档。

在树莓派上安装YCM(YouCompleteMe)

http://releases.llvm.org/download.html 官网有对应不同架构的预编译文档,自行挑选下载。下载好后

大专栏  le>
1
2
cd ~
wget -c http://releases.llvm.org/7.0.1/clang+llvm-7.0.1-armv7a-linux-gnueabihf.tar.xz
1
2
3
4
5
tar -xvJf clang+llvm-7.0.1-armv7a-linux-gnueabihf.tar.xz
mkdir ycm_build
cd ycm_build
cmake -G "Unix Makefiles" -DPATH_TO_LLVM_ROOT=~/clang+llvm-7.0.1-armv7a-linux-gnueabihf . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
make ycm_core

0x3.配置YCM

​ YCM在语义分析时使用libclang,而libclang需要参数选项,这从哪里来呢?YCM通过提供给一个代码工程一个python文档的方式来通知libclang所需的参数选项,这个文档就是.ycm_extra_conf.py

​ 复制.ycm_extra_conf.py

1
cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py ~/.vim/

​ 在.vimrc中添加以下配置项

​ 注意下面的 python 解释器的路径要和编译 ycm_core 的时候使用的 python 解释器是相同的版本(2 或 3)

1
2
3
4
5
6
7
8
9
10
11
12


let g:ycm_confirm_extra_conf=0

let g:ycm_complete_in_comments=1

let g:ycm_collect_identifiers_from_tags_files=1
" 键入第一个字符时就开始列出匹配项
let g:ycm_min_num_of_chars_for_completion=1
" 设置python解释器路径以及配置文档路径
let g:ycm_server_python_interpreter='/usr/bin/python'
let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'

0x4.可能会遇到的问题

1.退格失灵。

解决办法:在.vimrc文档中增加以下配置

1
2
set nocompatible
set backspace=indent,eol,start

2.无法补全C++代码

解决方法:在.ycm_extra_conf.py的flags部分添加以下内容

1
2
3
4
5
6
7
'-isystem',  
'/usr/include',
'-isystem',
'/usr/include/c++/4.8',
'-isystem',
'/usr/include',
'/usr/include/x86_64-linux-gun/c++',

使用’-isystem’是对系统自带的头文档进行解析,’-I’则是对第三方的头文档进行解析。

0x5.参考文章

https://www.cnblogs.com/zzqcn/p/4660615.html

https://www.jianshu.com/p/d908ce81017a?nomobile=yes

https://github.com/Valloric/YouCompleteMe

https://github.com/Valloric/YouCompleteMe/wiki/Building-Vim-from-source

猜你喜欢

转载自www.cnblogs.com/liuzhongrong/p/12000124.html