Vim:如何强制 Python3 超过 Python2
Vim: How to force Python3 over Python2
我使用的 Vim 是用 +python/dyn
和 +python3/dyn
1 编译的。我不再使用 Python2,也不希望 Vim 使用 Python2,但它似乎在 Python3 之前找到 Python2 并改为使用它。
我在其他地方读到,如果在我的 .vimrc
的顶部,我包括:
if has('python3')
endif
然后 Vim 将使用 Python3。不幸的是,这不是我的经验。当我在 .vimrc
的顶部包含它时,Vim 仍然首先找到 Python2,因此忽略了 Python3.
1 我对 gui 和命令行都使用预编译的 MacVim。
问题
Vim关于Python2.x和3.x接口的问题是它只能使用其中之一:
- 第一次使用
:python
会阻止进一步使用 :python3
,
- 并且首次使用
:python3
会阻止进一步使用 :python
。
黑客
has('python3')
应该加载 3.x 接口作为副作用,所以 hack 的要点是,如果在初始化过程的早期完成,以确保 3.x 界面首先加载。它与 :py3 ...
之类的操作本质上是一样的:它所做的只是使 :py
无法使用。
MacVim特别
MacVim 未构建 python
或 python3
功能,因此 has('python')
和 has('python3')
将永远 return 0
.
相反,你有python_dynamic
和python3_dynamic
,可以用同样的方法测试:
if has('python3_dynamic')
endif
但这有一些问题:
has('python3_dynamic')
没有与 has('python3')
相同的副作用,所以 hack 不会起作用,
has('python3_dynamic')
和 has('python_dynamic')
将始终为真,因为它们测试的功能始终存在。
现实检查
在任何情况下,:python
系列命令 总是 使用 Python 2.x 所以,如果您尝试使用 Python 3.x 和 :py
你现在可以把毛巾扔在这里,因为 Python 3.x 只能通过 :python3
和 [=34= 使用] 命令系列。
黑客攻击和妥协
如果您只想确保 :py3
和好友可用,一种方法是执行以下操作:
py3 print()
靠近 vimrc
的顶部,这将提前加载 3.x 界面,从而阻止进一步加载 2.x 界面,从而破坏 :py
和朋友。
另一种方法是将 :pythonx
系列命令与 3.x 接口一起使用:
set pyxversion=3
有关详细信息,请参阅 :help python-2-and-3
。
我使用的 Vim 是用 +python/dyn
和 +python3/dyn
1 编译的。我不再使用 Python2,也不希望 Vim 使用 Python2,但它似乎在 Python3 之前找到 Python2 并改为使用它。
我在其他地方读到,如果在我的 .vimrc
的顶部,我包括:
if has('python3')
endif
然后 Vim 将使用 Python3。不幸的是,这不是我的经验。当我在 .vimrc
的顶部包含它时,Vim 仍然首先找到 Python2,因此忽略了 Python3.
1 我对 gui 和命令行都使用预编译的 MacVim。
问题
Vim关于Python2.x和3.x接口的问题是它只能使用其中之一:
- 第一次使用
:python
会阻止进一步使用:python3
, - 并且首次使用
:python3
会阻止进一步使用:python
。
黑客
has('python3')
应该加载 3.x 接口作为副作用,所以 hack 的要点是,如果在初始化过程的早期完成,以确保 3.x 界面首先加载。它与 :py3 ...
之类的操作本质上是一样的:它所做的只是使 :py
无法使用。
MacVim特别
MacVim 未构建 python
或 python3
功能,因此 has('python')
和 has('python3')
将永远 return 0
.
相反,你有python_dynamic
和python3_dynamic
,可以用同样的方法测试:
if has('python3_dynamic')
endif
但这有一些问题:
has('python3_dynamic')
没有与has('python3')
相同的副作用,所以 hack 不会起作用,has('python3_dynamic')
和has('python_dynamic')
将始终为真,因为它们测试的功能始终存在。
现实检查
在任何情况下,:python
系列命令 总是 使用 Python 2.x 所以,如果您尝试使用 Python 3.x 和 :py
你现在可以把毛巾扔在这里,因为 Python 3.x 只能通过 :python3
和 [=34= 使用] 命令系列。
黑客攻击和妥协
如果您只想确保 :py3
和好友可用,一种方法是执行以下操作:
py3 print()
靠近 vimrc
的顶部,这将提前加载 3.x 界面,从而阻止进一步加载 2.x 界面,从而破坏 :py
和朋友。
另一种方法是将 :pythonx
系列命令与 3.x 接口一起使用:
set pyxversion=3
有关详细信息,请参阅 :help python-2-and-3
。