Vim compilado con python3 pero tiene ('python') devuelve 0

13

Acabo de seguir estas instrucciones para compilar vim con Python 3: https://github.com/Valloric/YouCompleteMe/wiki/Building-Vim-from-source

Después de la instalación, verifiqué si tengo python3:

vim --version | grep "python"

Que volvió:

+python3/dyn  

y

+python/dyn  

Pero cuando inicio vim y escribo uno de los comandos followinf, obtengo un 0:

  • :echo has('python3/dyn')
  • :echo has('python3')
  • :echo has('python')
  • :echo has('python/dyn')

¿Alguien tiene un problema similar?

EDITAR: Hola chicos, muchos comentarios útiles, solo quería decir gracias y decirles lo que hice para resolver esto. Seguí las instrucciones nuevamente desde el primer enlace que proporcioné, pero esta vez eliminé vim.tiny y, en lugar de intentar que vim sea compatible con python2 y python3, simplemente construí con el soporte de python3. Esto lo arregló

Mecanografía

python3 print("works")

en vim, espectáculos works. Mecanografía

echo has('python3')

me da una salida de 1y finalmente

vim --version | grep python3

Me da un valor de +python3

¡Gracias a todos por toda la ayuda y sugerencias!

usuario1314272
fuente
Intente ejecutar un comando real de Python, por ejemplo :python print "works"; esa es la mejor prueba (al menos interactivamente; en un guión preferiría has('python'), que debería funcionar.)
Ingo Karkat
Si está en Ubuntu, use el PPA de pi-rho ( launchpad.net/~pi-rho/+archive/ubuntu/dev ). Tiene vim construido con soporte dinámico de Python / Python3.
muru
¡También funcionó para mí!
Enrico Maria De Angelis

Respuestas:

4

Este es el resultado esperado. No hay pruebas has('python/dyn')y has('python3/dyn'), solo has('python')y has('python3').

Sato Katsura
fuente
55
todavía no ayuda si tengo ('python3') o has ('python'), todavía obtengo un 0
user1314272
El punto es que no puedes probar Python dinámico con has()... así que no lo uses has().
romainl
2
@romainl Entonces, ¿por qué es una característica documentada que se puede verificar con has()under :help feature-list?
jamessan
has('python')vuelve 1para +python y +python/dyn . Lo mismo para has('python3')y +python3/ +python3/dyn. Además, has('python/dyn')y has('python3/dyn')siempre regresa 0, ya sea que la función esté allí o no. Conclusión: no puedes usar has()para determinar si tienes +python[3]/dynSato Katsura ni yo sabemos cómo formatear el argumento correctamente.
romainl
1
Sin embargo, sería útil para Vim admitir las /dyncomprobaciones, especialmente porque has('python')carga la biblioteca de Python, lo que significa que no puede usar python3, y viceversa.
jamessan