Vim compilado com python3, mas tem ('python') retorna 0

13

Acabei de seguir estas instruções para compilar o vim com python 3: https://github.com/Valloric/YouCompleteMe/wiki/Building-Vim-from-source

Após a instalação, verifiquei se tenho o python3:

vim --version | grep "python"

O que retornou:

+python3/dyn  

e

+python/dyn  

Mas quando inicio o vim e digito um dos comandos followinf, recebo um 0:

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

Alguém teve um problema similar?

EDIT: Ei, pessoal, muitos comentários úteis, eu só queria agradecer e informar o que eu fiz para resolver isso. Segui as instruções novamente a partir do primeiro link que forneci, mas desta vez removi o vim.tiny e, em vez de tentar obter o vim para suportar python2 e python3, apenas desenvolvi com o suporte python3. Isso consertou

Digitando

python3 print("works")

no vim, mostra works. Digitando

echo has('python3')

me dá uma saída 1e, finalmente,

vim --version | grep python3

Dá-me um valor de +python3

Obrigado pessoal por toda a ajuda e sugestões !!

user1314272
fonte
Tente executar um comando Python real, por exemplo :python print "works"; esse é o melhor teste (pelo menos interativamente; em um script que eu preferiria has('python'), o que deve funcionar.
Ingo Karkat 20/09/16
Se você estiver no Ubuntu, use o PPA do pi-rho ( launchpad.net/~pi-rho/+archive/ubuntu/dev ). Ele foi desenvolvido com suporte dinâmico ao Python / Python3.
muru 20/09/16
Também funcionou para mim!
Enrico Maria De Angelis

Respostas:

4

Este é o resultado esperado. Não há testes has('python/dyn')e has('python3/dyn'), apenas has('python')e has('python3').

Sato Katsura
fonte
5
Ainda não ajuda se eu tiver has ('python3') ou has ('python'), ainda recebo um 0
#
O ponto é que você não pode testar python dinâmico com has()isso ... não use has().
romainl
2
@romainl Então, por que é um recurso documentado que pode ser verificado com has()abaixo :help feature-list?
jamessan
has('python')retorna 1para +python e +python/dyn . A mesma coisa para has('python3')e +python3/ +python3/dyn. Além disso, has('python/dyn')e has('python3/dyn')sempre retorne 0, independentemente de o recurso estar presente ou não. Conclusão: você não pode has()determinar se possui +python[3]/dynou Sato Katsura e eu não sabemos como formatar o argumento corretamente.
romainl
1
Embora, seria útil para o Vim suportar as /dynverificações, especialmente porque has('python')carrega a biblioteca Python, o que significa que você não pode usá-lo python3e vice-versa.
jamessan 20/09/16