Compatible façon d'utiliser soit: py OU: PY3 à vim?
-
26-10-2019 - |
Question
Dans mon .vimrc
et mon vim plug-in UltiSnips J'ai beaucoup de code qui ressemble à ce que
:py << EOF
print("Hi")
EOF
Maintenant, je veux vérifier si python3 est compilé dans Vim via has("python3")
et ensuite utiliser :py3
au lieu de :py
. Garder le code python compatible entre python 2 et 3 n'est pas la question - la question est de dire vim à utiliser. PY3 si est disponible et: py autrement
Quelqu'un at-il une bonne idée?
La solution
Vous pouvez tirer profit du fait que les commandes définies par l'utilisateur dans vim sont tout simplement lieu en boniment et-eval déclarations et écrire:
if has("python3")
command! -nargs=1 Py py3 <args>
else
command! -nargs=1 Py py <args>
endif
Ensuite, vous pouvez utiliser :Py
à python exécuter des commandes de la même manière que vous utilisez régulièrement :py
ou :py3
.
Autres conseils
J'ai résolu ce maintenant de façon laide que de vérifier une fois pour python3 ou python, puis définir une variable
let g:_uspy=":py " or ":py3 "
puis lancer la << EOF syntaxe à la mer et au lieu appeler chaque ligne de python via
exec g:_uspy "print('Hello')"
qui semble fonctionner okaish. Voir la solution complète dans ce blob git: