Kompatible Möglichkeit, entweder zu verwenden: Py oder: PY3 in Vim?
-
26-10-2019 - |
Frage
In meinem .vimrc
Und mein Vim -Plugin ultisnips habe ich viel Code, der so aussieht
:py << EOF
print("Hi")
EOF
Jetzt möchte ich überprüfen, ob Python3 in VIM überstellt wird has("python3")
und dann verwenden :py3
Anstatt von :py
. Wenn Sie den Python -Code zwischen Python 2 und 3 kompatibel halten, ist dies nicht das Problem - das Problem besteht darin, VIM zu verwenden: Py3, wenn verfügbar ist und: Py ansonsten.
Hat jemand eine gute Idee?
Lösung
Sie können die Tatsache nutzen, dass benutzerdefinierte Befehle in VIM einfach Ort-in-Patter-Eval-Anweisungen sind und schreiben:
if has("python3")
command! -nargs=1 Py py3 <args>
else
command! -nargs=1 Py py <args>
endif
Dann können Sie verwenden :Py
Um Python -Befehle auszuführen, genauso wie Sie regelmäßig verwenden :py
oder :py3
.
Andere Tipps
Ich habe dies jetzt hässlich gelöst, indem ich nur einmal nach Python3 oder Python nachgesehen und dann eine Variable festgelegt habe
let g:_uspy=":py " or ":py3 "
und dann die << EOF -Syntax über Bord werfen und stattdessen jede Python -Zeile über nennen
exec g:_uspy "print('Hello')"
was scheint okaisisch zu funktionieren. Siehe die vollständige Lösung in diesem Git -Blob: