Forma compatible de usar: Py o: Py3 en VIM?
-
26-10-2019 - |
Pregunta
En mi .vimrc
Y mi vim complemento ultisnips tengo mucho código que se ve así
:py << EOF
print("Hi")
EOF
Ahora, quiero verificar si Python3 se compila en Vim a través de has("python3")
y luego usar :py3
en vez de :py
. Mantener el código de Python compatible entre Python 2 y 3 no es el problema: el problema es decirle a VIM que use: Py3 si está disponible y: PY de lo contrario.
¿Alguien tiene una buena idea?
Solución
Puede aprovechar el hecho de que los comandos definidos por el usuario en VIM son simplemente declaraciones ubicadas en patrón y eval, y escribir:
if has("python3")
command! -nargs=1 Py py3 <args>
else
command! -nargs=1 Py py <args>
endif
Entonces puedes usar :Py
para ejecutar los comandos de Python de la misma manera que usas regularmente :py
o :py3
.
Otros consejos
He resuelto esto ahora de manera fea solo verificando una vez para Python3 o Python, luego estableciendo una variable
let g:_uspy=":py " or ":py3 "
y luego lanzando la sintaxis << EOF por la borda y, en su lugar, llame a cada línea de Python a través de
exec g:_uspy "print('Hello')"
que parece funcionar Okaish. Vea la solución completa en este git blob: