在树莓派上安装YCM(YouCompleteMe)

拈花ヽ惹草 提交于 2019-12-06 23:22:24

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

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

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

1
vim --version | grep python

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

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

1
sudo apt-get remove vim vim-runtime gvim

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

1234
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到目录下

123
cd ~git clone https://github.com/vim/vim.gitcd vim

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

123456789101112
./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/localmake VIMRUNTIMEDIR=/usr/local/share/vim/vim81

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

123
sudo apt-get install checkinstallcd ~/vimsudo checkinstall

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

12
cd ~/vimsudo make install

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

0x1.下载YCM

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

1234
cd ~/.vim/bundlegit clone --recursive https://github.com/Valloric/YouCompleteMe.gitcd YouCompleteMegit submodule update --init --recursive

0x2.安装libclang

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

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

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

大专栏  在树莓派上安装YCM(YouCompleteMe)le>

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

12
cd ~wget -c http://releases.llvm.org/7.0.1/clang+llvm-7.0.1-armv7a-linux-gnueabihf.tar.xz
12345
tar -xvJf clang+llvm-7.0.1-armv7a-linux-gnueabihf.tar.xzmkdir ycm_buildcd ycm_buildcmake -G "Unix Makefiles" -DPATH_TO_LLVM_ROOT=~/clang+llvm-7.0.1-armv7a-linux-gnueabihf . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cppmake 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)

123456789101112
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文档中增加以下配置

12
set nocompatibleset backspace=indent,eol,start

2.无法补全C++代码

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

1234567
'-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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!