如何检查vim编译时使用的Python版本?

40

在终端中执行以下命令可正常运行

python -c "import sys; print(sys.version)"

但是正在做

:python -c "import sys; print(sys.version)"

在vim中会抛出SyntaxError。

4个回答

73

我刚刚在这里发现,你也可以这样做。

:python import sys; print(sys.version)

13
如果您使用的是已编译 Python 3 的 Vim,请使用以下命令::python3 import sys; print(sys.version)。请注意,翻译文本保留了原始意思和专业术语,同时努力使其更加通俗易懂。 - Frederik Aalund

10

命令行模式下运行:ve[rsion]或从Bash中运行vim --version

  1. 如果 vim 编译时使用了 Python 3,你会发现 -python+python3
  2. 如果 vim 编译时使用了 Python 2,你会发现 +python-python3
  3. 如果 vim 没有编译支持 Python,则会发现 -python-python31

我不确定是否可能在:ve输出中同时找到+python+python3 - 目前可能不行



1目前,在Debian vim package中,-python-python3似乎是默认设置。如果您需要vim支持脚本语言,请安装vim-nox,该软件包专门为它们提供支持,并启用了(除其他功能外)+python3。还有一个经过大量重构的vim分支叫做neovim(或简称nvim)。顺便说一下:在Debian上,您可以通过运行update-alternatives --list vim来列出所有已安装的vim版本。


在 Mac 上我看到 +python/dyn 和 +python3/dyn,但 Python3 插件 Black 失败了,启动 vim 时显示“此脚本需要...Python 3.6 支持”。 - NeilG

10
我想你需要这个:
类型:
:python << EOF
import sys;
print(sys.version);
EOF
如果vim被编译为python,当你在命令行中输入:python << EOF时,命令行将展开多行并等待EOF。在EOF之前,键入你的python代码,最后以EOF结束。

编辑:正如你已经发现的那样,EOF是不必要的,你可以将脚本放在一行上,不需要引号和-c选项。EOF技巧对于在命令行中测试python/VIM脚本很有用。

:python import sys; print(sys.version);

到目前为止,你知道所有答案是否都使用了vim编译版本,而不是系统自带的vim吗? - beardc
不确定我明白你的意思。全部是什么?在vim中键入:!anyCommand将调用外部(系统)命令,例如:!python。只有在vim中编译了Python脚本支持时,才会提供:python(内部)。 - pb2q
谢谢,我基本上只是在问 :!python:python 分别指的是哪个 Python 版本。 - beardc
顺便说一下,这在我的“真正的”vim上运行良好,但由于某种原因,换行符似乎会导致Macvim出现问题。(它将其打印为^M) - beardc
啊,我明白了。那我就跟上你的步伐了。我也使用MacVim,但是<< EOF从来没有显示出^M - pb2q

-3
你可以直接在 Vim 中运行 python --version 命令来查看 Python 版本:
  1. 打开 Vim。
  2. 进入普通模式(非插入模式),输入 :!python --version
  3. 按回车键。

Python 的版本将被显示出来。


这是一个不正确的答案。它运行外部的Python命令并显示其版本,而不是Vim编译时使用的版本。 - PonyEars

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接