Vim youcompleteme Windows 安装保姆级教程

news/2024/9/18 12:06:58/ 标签: vim, windows, 编辑器

不说废话。

准备

检查 Vim 的 Python 配置

安装好 vimpython 后(python 必须 ≥ \ge 3.6),在 cmd 下运行

vim --version

会弹出以下窗口。

效果
如果发现 python/dynpython3/dyn 都是 - (我不知道只有前者是 + 能不能运行,可能不行)的话,重装 Vim 和 Python。

如果是 +,在 vim 中运行以下的命令:

:echo has('python3')
:python3 任意 python 代码

如果不报错(且正常运行),那么说明 Vim 配置成功。

如果报错,尝试在 Vim 中添加以下代码:

let &pythonthreedll='Python 路径/python版本.dll'
let &pythonthreehome='Python 路径'

并将环境变量中的 PYTHONHOMEPYTHONPATH 全部设为 Python 路径(没有新建一个)。

下载文件

注意:因为某些网站不再提供一些安装包,所以建议安装最新版。

安装 Vundle。

先尝试在 vimrc 中添加以下内容:

Plugin 'ycm-core/YouCompleteMe'

并运行 :PluginInstall

如果你的网相当好,没有出错,那么以后的加速手段都不用看了。

如果出错,那么就从 Gitee clone 一份,但是版本有些旧,还是建议镜像或者快速下载。

然后再在 third-party 里面 clone 一个 ycmd (有时候 Vundle 已经存在就不要 clone 了)

下载环境

在 Python 安装目录里找到 Scripts/pip.exe,并把 Scripts 设为环境变量。

安装 Java。

然后运行:

pip install go
pip install npm
pip install cmake (不确定可不可以)

安装 Node.js。

安装 2019 版 Visual Studio 生成工具,其实官网的 search 已经找不到了,这里给的是可以直接安装的 exe 文件。

准备好可以看到如下界面:

效果
选第一个,安装。

安装 youcompleteme

显然,作为“史上最难配置的插件”,它不仅仅需要以上的配置,还有更离谱的。

首先转到 youcompleteme 所在文件夹运行 python install.py --all --verbose,如果对自己相当自信可以不加 --verbose,因为下面的所有分析都源自 --verbose 的输出。

安装分为七部分:检查上面的环境是否配置、安装 abseil 和 llvm、编译很多 c 类型代码、安装 Omnisharp、运行 npm (好像是为了安装 Rust)、配置 Go、安装 Java 工具 jdt.ls、安装 ClangD

为了防止 github 爆炸,建议在本地能访问 github 的情况下运行。不行就开 hosts,详见百度。

检查环境

这一部分如果有问题肯定是你的问题,下面是应有的输出。

安装 Abseil 和 LLVM

这一部分需要 Github,加载非常慢,需要更改源代码。

在目录下寻找 CMakeLists.txt,应该有(至少)两个。

在这些 txt 中寻找 github (Notepad 中用 Ctrl+F 查找),在所有网址前加上 https://gitdl.cn/。这是加速网站。

txt
txt

编译 C

这一部分较长,但几乎没有问题。有问题就是你的 VS 出问题了。

安装 Omnisharp

这个用的是外部安装,没办法只能等,但是这个比较好,平均几分钟就行了。

运行 npm

这一部分的问题在于会一直卡在 still idealtree builddeps,左边是一个满进度条。

在 cmd 中输入以下命令即可:

npm config set registry https://registry.npmjs.org/

配置 Go

这时的问题是会报错:

connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

这时输入


go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

即可解决。

安装 jdt.ls

这边运行时会卡掉,多试几次,平均两次就好了。

还有可能返回 Http404,这时就是 youcompleteme 版本问题,更新即可。

安装 ClangD

这个依赖 Github,幸运的是我找到了 cache,位于 Vim 地址\vimfiles\bundle\YouCompleteMe\third_party\ycmd\third_party\clangd\cache。使用快速下载后把压缩文件放到 cache 里,即可。

至此,你成功安装了 youcompleteme。

运行

在运行时,你可能会遇到形如 ycmd 服务器加载失败的错误,注意不是 Traceback,而是正常输出。Traceback 的错误都是版本问题,重装即可解决。

在你的 vimrc 中加入:

vimrc">let g:ycm_server_python_interpreter='Python 路径/python.exe'

重启。

后记

猜猜我是怎么知道这么多的?

对,你没猜错,上面的问题我在配置时踩了个遍。

配置时,我重装了一次 Vim,一次 Python,一次 youcompleteme,跑了至少 20 次 install.py,耗费 5 个小时(当然我不可能在等待的时间闲着)。

如果认为有用,请点赞收藏。你的支持是我前进的动力。


http://www.ppmy.cn/news/1515868.html

相关文章

日志审计-graylog ssh登录超过6次告警

Apt 设备通过UDP收集日志,在gray创建接收端口192.168.0.187:1514 1、ssh登录失败次数大于5次 ssh日志级别默认为INFO级别,通过系统rsyslog模块处理,日志默认存储在/var/log/auth.log。 将日志转发到graylog vim /etc/rsyslog.conf 文件末…

第133天:内网安全-横向移动域控提权NetLogonADCSPACKDC永恒之蓝

案例一:横向移动-系统漏洞-CVE-2017-0146 这个漏洞就是大家熟悉的ms17-010,这里主要学习cs发送到msf,并且msf正向连接后续 原因是cs只能支持漏洞检测,而msf上有很多exp可以利用 注意msf不能使用4.5版本的有bug 这里还是反弹权…

2 种方式申请免费 SSL 证书,阿里云 Certbot

如何使用免费的 SSL 证书,有时在项目中需要使用免费的 SSL 证书,Aliyun 提供免费证书,三个月有效期,可以直接在aliyun 申请,搜索 SSL 证书,选择测试证书。 Aliyun 证书需要每三月来来换一次,页…

揭开CSS遮罩术:mask与-webkit-mask属性深度解析

标题:揭开CSS遮罩术:mask与-webkit-mask属性深度解析 摘要 CSS的mask属性是一种强大的工具,它允许开发者将图像或渐变用作遮罩层,以隐藏或显示元素的特定部分。-webkit-mask属性是其对应的Webkit前缀版本,用于在基于…

神经网络架构KAN确实具有一些独特的特点及底层原理和应用场景

Kolmogorov-Arnold Networks (KAN) 是基于 Kolmogorov-Arnold 表示定理的一类神经网络架构。其底层原理包括以下几个方面: 底层原理 Kolmogorov-Arnold 表示定理: 定理表明,任何连续函数都可以表示为一组单变量函数的有限叠加。这为多维函数…

Java笔试面试题AI答之线程(22)

文章目录 127. 简述Java 中的同步集合与并发集合有什么区别 ?同步集合并发集合总结 128. 简述怎么检测一个线程是否拥有锁?1. 查阅文档和API2. 调试和日志3. 使用线程分析工具4. 自定义锁实现5. 锁监视器注意事项 129. 简述你如何在 Java 中获取线程堆栈…

一文总结Git的常用命令

基本概念 Git是一个分布式版本控制系统,用于管理和跟踪文件的变化。它可以追踪文件的每个版本,记录文件的修改历史,并允许用户在不同版本之间进行切换和合并。Git可以让多个开发人员同时对同一个代码库进行工作,而不会发生冲突。 …

排查端口映射失败的几个案例

端口映射这个话题,已经是老生常谈了,别说这是网工必备技能了,连很多非IT人士都会在路由器上配置端口映射,但我为什么还要单开一篇文章来讲呢,是因为在我的IT外包服务过程中,还是碰到过很多次端口映射失败的…

关于Java中@Component的使用中出现@Autowired为NULL的问题

目录: 关于Java中Component的使用中出现Autowired为NULL的问题解决过程 关于Java中Component的使用中出现Autowired为NULL的问题 解决过程 我在写一个项目中使用Component配置了一个RedisCompent在这里插入代码片类我将在AccountController和 UserinfoController中…

【Docker】Docker学习02 | docker-cli的基本命令

本文首发于 ❄️慕雪的寒舍 简单了解一下docker client的常用命令,更多命令可以查看完整命令列表。不同命令之间的关系,可以查看下图。 如果你看不到图片,不用担心,后面对每个命令进行介绍的时候,会提到它们的作用的。…

静态内部类来实现单例

现单例模式的方式有很多种,除了以上所提到的,我们还可以使用静态内部类来实现单例,这样更简单,不需要判空也不需要加 volatile 关键字去防止指令重排的问题。示例代码如下: package com.huawei.l00379880.mythread.Ch…

网络安全教程初级指南

网络安全是当今最抢手的技能之一。如今,信息库如此庞大,节点网络也越来越庞大,网络安全的重要性也越来越高。 本网络安全教程适合初学者和专业人士。 在本教程中,您将学习有关网络安全的所有基本技能、工具和策略。 本网络安全…

Git 多人协作

1. 准备工作 ⽬前,我们所完成的⼯作如下 • 基本完成 Git 的所有本地库的相关操作,git基本操作,分⽀理解,版本回退,冲突解决等等。 • 申请码云账号,将远端信息clone到本地,以及推送和拉取。 …

Ubuntu下通过Docker部署Synapse服务器技术博客

今天,我在阿贝云这个不错的免费云服务器上进行Synapse部署测试。这家免费云服务商太棒了,1核CPU、1G内存、10G硬盘、5M带宽,阿贝云的免费服务器性能超乎想象。 作为一个资深的IT技术爱好者,我简直爱不释手Docker这个神器。它可以轻松地帮我部署各种应用程序,包括今…

【RabbitMQ】高级特性

本文将介绍一些RabbitMQ的重要特性。 官方文档:Protocol Extensions | RabbitMQ 本文是使用的Spring整合RabbitMQ环境。 生产者发送确认(publish confirm) 当消息发送给消息队列,如何确保消息队列一定收到消息呢,RabbitMQ通过 事务机制 和 …

Linux下使用cat、grep、sed查看文件任意几行的数据

使用grep命令 grep -C 5 foo file 显示file文件里匹配foo字串那行以及上下5行 grep -B 5 foo file 显示foo及前5行 grep -A 5 foo file 显示foo及后5行grep -C 行数 要查的关键字 文件名 使用cat与tail、head的组合命令 1、查看最后1000行的数据 cat filename | tail -n 1…

如何备份电脑所有数据?四个方法实现一键备份所有数据

备份电脑所有数据是一个重要的步骤,可以确保在数据丢失或损坏时能够迅速恢复。以下是一些备份电脑所有数据的方法,对于有重要数据的企业来说非常实用。 一、使用外置存储设备 选择设备:首先,选择一个容量足够大的外置存储设备&am…

flume--数据从kafka到hdfs发生错误

解决: #1.将flume自带的依赖删除 mv /opt/installs/flume1.9/lib/guava-11.0.2.jar /opt/installs/flume1.9/lib/guava-11.0.2.jar.bak #2.将hadoop的依赖发送到flume下 cp /opt/installs/hadoop3.1.4/share/hadoop/common/lib/guava-27.0-jre.jar /opt/installs/f…

wpf datagrid 实现双向绑定

前台 <DataGridAutoGenerateColumns"False"Background"White"CanUserAddRows"True"Grid.Row"1"RowEditEnding"DataGrid_OnRowEditEnding"RowHeight"60"SelectionUnit"CellOrRowHeader"x:Name"…

C# 数组,List,Stack,Dictionary,Queue,LinkedList 如何选择

回顾数据容器 变量 无符号 byte ushort uint ulong 有符号 sbyte short int long 浮点数 float double decimal 特殊 char bool string 复杂数据容器 枚举 enum 结构体 struct 数组&…