在我的.vimrc
和我的vim插件UltiSnips中,我有很多看起来像这样的代码
:py << EOF
print("Hi")
EOF
现在,我想检查python3是否通过has("python3")
编译到Vim中,然后使用:py3
而不是:py
。保持python 2和3之间的python代码兼容不是问题 - 问题是告诉vim使用:py3如果可用,则:py否则。
有人有个好主意吗?
答案 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中的完整解决方案: