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?

¿Fue útil?

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:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top