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?

Était-ce utile?

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:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top