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?

War es hilfreich?

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:

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top