mac vim 安装 YouCompleteMe 插件自动补全

article/2025/8/22 13:25:06

前言

笔者常用vim进行c/c++/go开发,虽说vim也有自带自动补全(control+n,control+p),不过操作上还是比较麻烦,笔者希望可以实现,输入部分单词可以直接弹出下拉框提示所有可能的单词。网上一搜,发现大家都在强推YouCompleteMe,今天跟着官网教程尝试安装了一把,也踩了几个坑,记录下来,希望对大家有所帮助。

先附上官网链接:

https://github.com/ycm-core/YouCompleteMe#installation

官网写的很清楚了,直接上截图

下面具体操作:

一、安装vundle和YouCompleteMe

vundle是vim插件管理器,可以方便的进行插件的安装和移除

vundle官网链接:

https://github.com/VundleVim/Vundle.vim#about

直接把安装和配置过程里面关键的步骤贴出来了,我们需要先git clone下载vundle源码,然后按照后面的步骤,利用vundle安装YouCompleteMe插件。

配置过程其实也很简单,直接在自己的~/.vimrc配置里面复制粘贴上官网里面的一段话,需要注意的是,需要安装的插件必须位于 call vundle#begin()和 call vundle#end() 之间,第一步里面的截图中,官网只是给了几个插件的安装,我们不需要的话可以直接去掉这几个插件,然后补充自己需要的插件(youcompleteme)

然后直接:PluginInstall即可安装配置中的插件。

set nocompatible              " be iMproved, required
filetype off                  " required" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
Plugin 'Valloric/YouCompleteMe'" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList       - lists configured plugins
" :PluginInstall    - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean      - confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line

此时,遇到一个问题:

Error running :helptags /Users/xxx/.vim/bundle/Vundle.vim/doc

解决方案:

https://stackoverflow.com/questions/21080391/fresh-vim-install-vim-permission-errors-vundle-not-functional/21080650#21080650

出现下面这个截图就说明YouCompleteMe安装ok了,接下来准备编译YouCompleteMe

二、安装必备库

编译YouCompleteMe之前需要先安装必备库。

brew安装cmake python mono go nodejs

brew install cmake python mono go nodejs

三、安装vim

这里非常坑,youcompleteme要求必须支持python3.6的vim,下面这个命令可以查看vim是否支持python3.6

vim --version | grep python

带+的就是支持:

推荐brew重新下载一个,不用系统自带的vim

但是仅仅用官网给出来的下面这个命令,搞完之后,在编译的时候会报错(vim不支持python3.6):YouCompleteMe unavailable: requires Vim compiled with Python (3.6.0+) support

brew install vim

百度了一下,看大家都是在install vim的时候指定python3支持,但这种方法已经过时了,从Homebrew的1.6.0(2018-04-09)版本开始,默认的python版本就是3,而且实操输入下面的命令,会报错,不支持的flag

brew install vim --with-python3

后来在参考文献里面找到了解法,仅当python --version为版本3时,brew install vim才会安装具有python3支持的vim,不然默认是支持python2的vim。正确安装步骤走一波:

alias python=python3
brew install vim
vim --version|grep python
unalias python

参考:

https://qastack.cn/superuser/1115159/how-do-i-install-vim-on-osx-with-python-3-support

四、安装和编译YouCompleteMe

如果之前已经在第一步通过Vundle安装了YouCompleteMe源码,则不需要通过git下载源码了。否则需要从git拉下来源码:

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

官方推荐下面一键傻瓜式编译(需要sudo权限):

cd ~/.vim/bundle/YouCompleteMe
python3 install.py --all

也可以根据需要支持的语言进行自定义编译:

翻译成脚本就是

cd ~/.vim/bundle/YouCompleteMe
python3 install.py --cs-completer      # support C#
python3 install.py --go-completer      # support go
python3 install.py --ts-completer      # support JavaScript and TypeScript 
python3 install.py --rust-completer    # support rust
python3 install.py --java-completer    # support java
python3 install.py --clangd-completer  # support C++/C

运行install.py的时候,遇到了另一个问题:Your C++ compiler does not fully support C++17

参考下面的方式解决的:

sudo CXX=g++-8 python3 ./install.py --all

参考:

https://stackoverflow.com/questions/65284572/your-c-compiler-does-not-fully-support-c17

又来一个问题:

ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)

解决方案在此:

https://stackoverflow.com/questions/50236117/scraping-ssl-certificate-verify-failed-error-for-http-en-wikipedia-org

 

 


http://chatgpt.dhexx.cn/article/mxWEv4TQ.shtml

相关文章

安装Macvim

前言 本文记录了一次安装Macvim遇到的问题和解决办法,并提到了如何从终端启动Macvim。 brew install macvim 成功,但启动报错 今天重装了Mac系统(10.11.5 El Capitan,你问Mac居然也重装系统?我只是想要一块干净的硬盘。). 折腾…

命令行使用MacVim

命令行使用MacVim 配置环境变量 vim ~/.zshrc 增加以面一行 alias gvim/Applications/MacVim.app/Contents/MacOS/Vim -g2021年8月30日补充 评论区有小伙伴有疑问,截图说明一下。 动画演示 总结 我个人还是喜欢直接使用命令行中的vim,这样更纯粹…

mac vim没有颜色 vim着色

mac选手使用vim的时候发现,代码全是白色的!我的天,我用的是vi吗? 但是编辑/usr/share/vim/vimrc中会发现系统不让用户改因为没有权限,这样可以直接在当前用户下实现同样的功能。步骤如下: 新建vimrc文件 …

MacOS - MacVim安装

1.应用场景 主要用于学习使用MacVim进行编程,尤其是在服务端编程发挥作用~ 2.学习/操作 1.文档阅读 01|各平台下的 Vim 安装方法:上路前准备好你的宝马-极客时间 Releases macvim-dev/macvim GitHub https://github.com/macv…

2022 最新 Mac Vim 开发环境的部署与配置

2022 最新 Mac Vim 开发环境的部署与配置 效果图 Vim 插件简介 插件名描述pope/vim-fugitiveVim 编辑器中的 Git 包装器插件,它可以让我们在 Vim 编辑器中完成 Git 操作scrooloose/nerdtree用来提供一个导航目录的侧边栏ryanoasis/vim-devicons在 NERDTree 中显示…

《设计模式之禅》中23种设计模式demo汇总

《设计模式之禅》中23种设计模式demo汇总 Git地址: https://github.com/baozi-little/designPatterns 23种设计模式如下图: 项目架构:JDK1.8 springboot 每个设计模式都有对应的单元测试,可直接运行,项目结构如下&a…

设计模式之禅--思维导图

原图ProcessOn里搜索:设计模式之禅

设计模式之禅之结构类PK【装饰模式VS适配器模式】

设计模式之禅PK之结构类 结构类设计模式 结构类模式: 适配器模式 桥梁模式 组合模式 装饰模式 门面模式 享元模式 代理模式 相同点:他们都是通过组合类或对象产生更大的结构以适应更高的层次的逻辑需求 【装饰模式】VS【适配器模式】 装饰模式和适配器模…

设计模式之禅——观察者模式

观察者模式是一种比较常见的设计模式,在安卓源码中也应用得很多,如baseAdapter、相关触发器机制。 首先从一个情景入手,战国时期,李斯(观察者)作为秦国宰相希望监视(观察)韩非子&…

《设计模式之禅》-策略模式

策略模式 定义 定义一组算法,将每个算法都封装起来,并且使它们之间可以互换 策略模式有三个角色 1.Strategy 抽象策略角色 策略,算法家族的抽象,通常为接口,定义每个策略或算法必须具有的方法和属性。 2.Concrete…

《设计模式之禅》-原型模式

原型模式属于比较简单的设计模式,所以使用次数也非常的多 定义: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 原型模式的通用代码: public class PrototypeClass implements Cloneable {Overridepublic Pr…

设计模式之禅——门面模式

门面模式【Facade Pattern】也叫外观模式,是一种比较常用的封装模式,其定义如下: 【要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更容易使用】 门面模式注重“统一…

设计模式之禅读后感

过早优化是万恶之源——Unix编程思想 让正确的程序更快,要比让快速的程序正确容易得多。 文章目录 前言六大设计原则*单一职责原则**里氏替换原则**依赖倒置原则**接口隔离原则**迪米特法则**开闭原则* 二十三种设计模式创建型模式*单例模式**工厂方法模式**抽象工厂…

设计模式之禅笔记

设计模式PK 创建类模式PK 工厂方法模式 VS 建造者模式 工厂方法模式注重的是整体对象的创建方法。建造者模式注重的是部件构建的过程。 工厂方法模式的对象粒度较粗,建造者模式的产品对象粒度较细。 抽象工厂模式 VS 建造者模式 抽象工厂模式也是注重产品的整…

《设计模式之禅》(第2版)

第一部分 大旗不挥 谁敢冲锋 —— 6大设计原则全新解读 第1章 单一职责原则 单一职责原则,Single Responsibility Principle,简称SRP,有且只有一个原因引起类/接口的变更;即一个接口/类只有一个职责,只负责一件事…

设计模式之禅《一》 大旗不挥,谁敢冲锋 ——6大设计原则

设计模式之禅《一》大旗不挥,谁敢冲锋 ——6大设计原则 《一》 六大原则 一:单一职责原则 1、单一职责原则最难划分的就是职责 2、有两个可以变化的原因放到了一个接口中,这就为以后的变化带来了风险。 3、对于单一职责原则,…

设计模式之禅(六大设计原则)

1.单一职责原则(Single Responsibility Principle) 也就是职责划分要明确,单一职责原则提出了一个编写程序的标准,用“职责”或者“变化原因”来衡量接口或者类设计的是否优良,但是“职责”或者“变化原因”都是不可度量的,因项目…

什么是ASCII码

ASCII码英文全称America Standard Code for Information Interchange,中文意思:美国信息交换标准码。它已被国际标准化组织(ISO)定为国际标准,称为ISO 646标准。适用于所有拉丁文字字母,ASCII码有7位码和8位…

最全ASCii 码表和说明

A的ASCII码是65,a的ASCII码是97。 ASCII码表中,小写字母排在大写字母的后面,一个字母的大小写数值相差32,一般知道大写字母的ASCII码数值,其对应的小写字母的ASCII码数值就算出来了,是大写字母的ASCII码数…

ASCII码

字符编码即ASCII码(American Standard Code for Information Interchange,美国信息交换标准码,国际通用的计算机内的字符数字的二进制编码),它是7位二进制编码,总共有128个符号,包括英文26个大写字母&#…