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

所需环境(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 pumvisible() ? '' : '\'

"上下左右键行为"

inoremap pumvisible() ? '\' : '\'

inoremap pumvisible() ? '\' : '\'

inoremap pumvisible() ? '\\\' : '\'

inoremap pumvisible() ? '\\\' : '\'

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

相关文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: