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?

È stato utile?

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:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top