兼容的方式:在vim中使用py OR:py3?

时间:2012-01-10 14:54:20

标签: python vim python-3.x ultisnips

在我的.vimrc和我的vim插件UltiSnips中,我有很多看起来像这样的代码

:py << EOF
print("Hi")
EOF

现在,我想检查python3是否通过has("python3")编译到Vim中,然后使用:py3而不是:py。保持python 2和3之间的python代码兼容不是问题 - 问题是告诉vim使用:py3如果可用,则:py否则。

有人有个好主意吗?

2 个答案:

答案 0 :(得分:6)

你可以利用vim中用户定义的命令只是put-in-patter-and-eval语句,并写:

if has("python3")
    command! -nargs=1 Py py3 <args>
else
    command! -nargs=1 Py py <args>
endif

然后您可以使用:Py运行python命令,方法与定期使用:py:py3相同。

答案 1 :(得分:0)

我现在以丑陋的方式解决了这个问题,只需检查ONCE for python3或python,然后设置变量

let g:_uspy=":py "   or ":py3 "

然后抛出&lt;&lt; EOF语法覆盖,而是通过

调用python的每一行
exec g:_uspy "print('Hello')"

似乎工作okaish。请参阅此git blob中的完整解决方案:

https://github.com/SirVer/ultisnips/blob/da49b4b7c4669bc462a98c9abc71b42d43d408bc/plugin/UltiSnips.vim