在vim中兼容使用:py或:py3的方式?
在我的 .vimrc
文件和 Vim 插件 UltiSnips 中,有很多代码看起来像这样:
:py << EOF
print("Hi")
EOF
现在,我想检查一下 Vim 是否支持 python3,可以通过 has("python3")
来实现。如果支持的话,我就想用 :py3
,如果不支持,就用 :py
。这里的关键不是让 Python 2 和 3 的代码兼容,而是要告诉 Vim,如果可以用 :py3 就用它,不行的话就用 :py。
有没有人有好的主意呢?
2 个回答
0
我现在用一种不太优雅的方法解决了这个问题,方法是只检查一次是用python3还是python,然后设置一个变量。
let g:_uspy=":py " or ":py3 "
接着我就不再使用<< EOF这种语法,而是通过调用每一行的python来实现。
exec g:_uspy "print('Hello')"
这个方法似乎还不错。完整的解决方案可以在这个git链接中查看:
6
你可以利用这样一个事实:在vim中,用户自定义的命令其实就是一些放置模式和评估的语句。你可以这样写:
if has("python3")
command! -nargs=1 Py py3 <args>
else
command! -nargs=1 Py py <args>
endif
然后你就可以用 :Py
来运行python命令,就像你平常使用 :py
或 :py3
一样。