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

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

现在,我想检查是否将Python3编译到VIM中 has("python3") 然后使用 :py3 代替 :py. 。将Python代码保持在Python 2和3之间的兼容不是问题 - 问题是告诉VIM使用:PY3如果可用,则:py否则。

有人一个好主意吗?

有帮助吗?

解决方案

您可以利用一个事实,即VIM中的用户定义的命令仅仅是一个位置和评估语句,并写下:

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

那你可以使用 :Py 以与定期使用的方式运行python命令 :py 或者 :py3.

其他提示

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

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

然后将<< eof语法在舷外上抛出,然后通过

exec g:_uspy "print('Hello')"

这似乎有效。请参阅此Git Blob中的完整解决方案:

https://github.com/sirver/ultisnips/blob/da49b4b7c4669bc462a98c9bc71b42d43d408bc/plugin/ultisnips.vim

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top