Compatibile modo per utilizzare: py OR: PY3 in vim?
-
26-10-2019 - |
Domanda
Nel mio .vimrc
e il mio vim plug UltiSnips Ho un sacco di codice che sembra che
:py << EOF
print("Hi")
EOF
Ora, voglio verificare se python3 viene compilato in Vim via has("python3")
e quindi utilizzare :py3
invece di :py
. Mantenere il codice python compatibili tra le python 2 e 3 non è il problema - il problema è quello di dire a Vim di usare:. PY3 se è disponibile e: py altrimenti
Qualcuno ha una buona idea?
Soluzione
Si può approfittare del fatto che i comandi definiti dall'utente in vim sono semplicemente posto-in-patter-and-eval dichiarazioni, e scrivere:
if has("python3")
command! -nargs=1 Py py3 <args>
else
command! -nargs=1 Py py <args>
endif
Quindi è possibile utilizzare :Py
a Python eseguire comandi stesso modo in cui si utilizzano regolarmente :py
o :py3
.
Altri suggerimenti
Ho risolto questo ora in un brutto modo soltanto controllando VOLTA per python3 o pitone, quindi impostare una variabile
let g:_uspy=":py " or ":py3 "
e poi gettando la << EOF sintassi mare, invece chiamare ogni linea di pitone tramite
exec g:_uspy "print('Hello')"
che sembra funzionare okaish. Vedere la soluzione completa in questo blob git: