使用Anaconda时让Vim8.2支持Python3(Win10)

使用Anaconda时让Vim8.2支持Python3(Win10)

补充

  • 2020年4月18日:发现方案一会导致一些其他的问题,建议使用方案二。

遇到问题

从官方的GitHub里下载的Vim 64-bit。
在这里插入图片描述
可以看到,已经支持了python2和python3。

另外,我使用了coc-nvim来实现补全等高级功能。

Plug 'neoclide/coc.nvim', {'branch': 'release'}

coc-nvim提供了另一套功能扩展来提供更丰富的功能支持。支持的扩展在这里:https://www.npmjs.com/search?q=keywords%3Acoc.nvim

我选择使用coc-snippets来支持snippets,https://www.npmjs.com/package/coc-snippets

它支持使用UltiSnips的snippets,同时也支持使用UltiSnips的大部分特性,包括使用python进行代码段的扩展。

根据手册[4]和文章[5],我简单写了一个小的片段:

snippet a_py "author's information" b
# @Time    : `!p from datetime import datetime
if not snip.c:
    snip.rv=datetime.now().strftime("%Y-%m-%d")`
# @Author  : lartpang
# @FileName: `!v expand('%')`
# @Project : ${1:ProjectName}
# @GitHub  : https://github.com/lartpang
endsnippet

但是以为没有做进一步python的配置,导致这里的python代码是没有办法执行的。

如何配置

方案一

主要满足以下两点即可:

  • 系统里安装和VIM相同位数和版本(包括小版本)的Python
  • 环境变量里添加PYTHONHOME&PYTHONPATH

这里我们需要注意几条指令:

  1. echo has('python')
  2. echo has('python3')
  3. python print "Hello"
  4. python3 print("Hello")

前两条会返回0或1,可以表示:when Python 2 and 3 are both available and loaded dynamically, these has() calls will try to load them. 返回1的时候说明对应版本(2或3)的python是可以检测并且能动态载入的。一般来说,在我们开始配置前,这里的echo返回的都是0,即并没有检测。

而第三条指令,是为了查找到我们需要安装的python小版本。如果报错,是会提示对应的版本,这时我们就可以安装对应的版本的python就可以。

python准备OK后(我使用的是Minicanda安装的,直接升级了主环境里的python),这时我们需要配置环境变量了。为了方便的处理,这里我们使用一款windows的软件:rapideehttps://www.rapidee.com/,这款软件可以很方便的修改调整系统和用户的环境变量:
软件截图
我们在用户变量里添加两条新的变量:
在这里插入图片描述
分别指向我们安装好的python的目录即可。

此时我们再重新打开VIM,可以输出看看了:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个时候我们再使用编写的脚本,可以看到已经能够展示时间了:
VIM_Python

方案二

似乎Vim对于使用Miniconda安装的Python是无法检测到的,但是对于使用官网的Python安装包安装的Python确是可以检测到的。

所以我们可以这样处理:

  • 首先安装Miniconda,这里推荐从https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/下载平时开发使用的版本。
  • 安装Miniconda的时候,使用默认的勾选即可,不要添加到环境变量里(虽然我们将无法再终端直接调用Miniconda的主环境里的python,但是conda依然是可以使用的。
  • 单独安装匹配Vim的Python版本,这里我安装的是windows的64 bit版本(要注意,直接下载是32 bit,你得进一步选择下)。
  • 这里安装独立的Python的时候要勾选添加到环境变量里。

这样的流程之后,我们在终端里输入python,可以看到输出:
在这里插入图片描述
可知,这是官方的Python安装包对应的python。
但是激活子环境后,我们可以看到:
在这里插入图片描述
此时打开Vim看看:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同时我们的子环境也可以正常使用了。这种方式相当于我们不再使用Miniconda的子环境,而是仅仅使用其管理子环境的优势。

参考链接

  1. https://stackoverflow.com/questions/38132755/importerror-no-module-named-encodings/45667503#45667503
  2. 不重新编译,让官方网站下载的Vim支持Python: https://blog.zengrong.net/post/pyton_support_on_vim/
  3. vim无法完美支持Python2和Python 3: https://blog.csdn.net/qq_42672770/article/details/87108703
  4. https://github.com/SirVer/ultisnips/blob/master/doc/UltiSnips.txt
  5. Creating Markdown Front Matter with Ultisnips: https://jdhao.github.io/2019/12/22/ultisnips_avoid_content_update/
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值