Vim自动补全插件YouCompleteMe安装教程Centos8

不得不说,这个插件好用是好用,但安装起来真的相当麻烦

所需环境(2022.06.09):

1、vim最低要求8.1+(这个要手动编译安装,具体看我上一篇)

Vim must have a working Python 3.6 runtime, compiled with --enable-shared (or --enable-framework). You can check with :py3 import sys; print( sys.version ).

2、Python3.6+

3、GCC 要求8以上,Clang要求7以上,CMake要求3.13以上,提前检查编译器版本

这一步自行解决了,网上教程多,准备好编译环境以后,我们开始下载代码

YCM有两种方式下载源码

一、通过插件管理软件下载源码

二、Github Clone下载源码

这里我只尝试了第二种,官方给的例子是Ubuntu的,笔者是某腾云Centos8系统

1、下载源码(--recursive递归submodules)

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

YCM主仓库包含很多子仓库,需要全部抓取下来

不加--recursive也用可以下面代码克隆子仓库

cd ~/.vim/bundle/YouCompleteMe
git submodule update --init --recursive

说实在话,这一步是最难,因为国内网络环境的问题(你懂的,我挂了一天都下载不完,一直unable to acess,网上找了一堆方法,包括什么镜像加速试了都不行,不知道是不是失效了还是我这边网络不给力,最后用某科学手段下载下来,再打包传到服务器上离线安装了,打包后170M左右

20230619更新补充:

git爬YCM离线包要注意设置unix格式和window格式

我打包的离线版本YouCompleteMe:

链接:https://pan.baidu.删除com/删除s/1ylO40s9C1PqxMNtny9a删除Pyw?pwd=gq8m 
提取码:gq8m 
 

2、安装YCM

当前工作路径先切到 ~/.vim/bundle/YouCompleteMe 下。

python ./install.py --clang-completer

这里根据自己需要进行配置,我主要是python、C,只加了Clang支持

#语言支持:
C/C++/Objective-C/Objective-C++:编译时添加--clang-completer
C#:先安装Mono,编译时添加--cs-completer
Go:先安装Go,编译时添加--go-completer
TypeScript:先安装 Node.js and npm,然后使用npm install -g typescript安装TypeScript SDK
JavaScript: 先安装 Node.js and npm,编译时添加--js-completer
Rust: 先安装Rust,编译时添加--rust-completer
Java: 先安装JDK8,编译时添加--java-completer
全部支持:先安装所有的依赖环境,编译时添加--all

大概等待十几分钟吧,编译完成后,YCM插件就安装完成了

3、YCM配置文件(非必须

很多博客这里会把examples文件夹底下的.ycm_extra_conf.py拷贝到   ~/.vim/bundle/YouCompleteMe里,但不知道是不是YCM插件更新了,笔者这里安装好后~/.vim/bundle/YouCompleteMe底下已经有一个配置文件了

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

如果没有那也可以自己复制一份过去,然后根据需要进行配置

4、启动YCM插件

提前安装好Vim的插件管理器Vundle或者Vim-Plug,我这里用的是Vim-Plug,安装方式都很简单,可以看官方例子

~/.vimrc Vim配置文件里面添加如下,然后输入:Source ~./vimrc 重载配置文件,:wq保存文件后,YCM插件就启动成功了

call plug#begin('~/.vim/bundle')

Plug 'Valloric/YouCompleteMe'

call plug#end()

也可以根据自己需要,修改.vimrc配置

" 设置默认的配置文件,可以按照上文攥写的位置来修改,笔者修改了位置 "
let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/.ycm_extra_conf.py'
"打开vim时不再询问是否加载ycm_extra_conf.py配置"
let g:ycm_confirm_extra_conf=0
set completeopt=longest,menu
"python解释器路径"
let g:ycm_path_to_python_interpreter='/usr/bin/python'
"是否开启语义补全"
let g:ycm_seed_identifiers_with_syntax=1
"是否在注释中也开启补全"
let g:ycm_complete_in_comments=1
let g:ycm_collect_identifiers_from_comments_and_strings = 0
"开始补全的字符数"
let g:ycm_min_num_of_chars_for_completion=2
"补全后自动关机预览窗口"
let g:ycm_autoclose_preview_window_after_completion=1
" 禁止缓存匹配项,每次都重新生成匹配项"
let g:ycm_cache_omnifunc=0
"字符串中也开启补全"
let g:ycm_complete_in_strings = 1
"离开插入模式后自动关闭预览窗口"
autocmd InsertLeave * if pumvisible() == 0|pclose|endif
"回车即选中当前项"
inoremap <expr> <CR>       pumvisible() ? '<C-y>' : '\<CR>'     
"上下左右键行为"
inoremap <expr> <Down>     pumvisible() ? '\<C-n>' : '\<Down>'
inoremap <expr> <Up>       pumvisible() ? '\<C-p>' : '\<Up>'
inoremap <expr> <PageDown> pumvisible() ? '\<PageDown>\<C-p>\<C-n>' : '\<PageDown>'
inoremap <expr> <PageUp>   pumvisible() ? '\<PageUp>\<C-p>\<C-n>' : '\<PageUp>'

20230621遇到的问题:

YouCompleteMe unavailable: /usr/local/lib/python3.10/lib-dynload/_socket.cpython-310-x86_64-linux-gnu.so: undefin ed symbol: PyByteArray_Type

解决方法:

export LDFLAGS="-rdynamic"

ImportError: $PREFIX/lib/python3.8/lib-dynload/_socket.cpython-38-x86_64-linux-gnu.so: undefined symbol: PyByteArray_Type #3580

参考资料:

GitHub - ycm-core/YouCompleteMe: A code-completion engine for Vim

在CentOS 8上安装YouCompleteMe插件_SVRach的博客-CSDN博客_centos安装youcompleteme

vim插件——YouCompleteMe_蓝月心语的博客-CSDN博客_vim youcompleteme

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值