Vim скомпилирован с python3, но имеет ('python') возвращает 0

13

Я просто следовал этим инструкциям для компиляции vim с python 3: https://github.com/Valloric/YouCompleteMe/wiki/Building-Vim-from-source

После установки я проверил, есть ли у меня python3:

vim --version | grep "python"

Который вернулся:

+python3/dyn  

и

+python/dyn  

Но когда я запускаю vim и набираю одну из следующих команд followinf, я получаю 0:

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

У кого-нибудь была подобная проблема?

РЕДАКТИРОВАТЬ: Привет, ребята, много полезных комментариев, я просто хотел поблагодарить вас и дать вам знать, что я сделал, чтобы решить эту проблему. Я снова последовал инструкции по первой ссылке, которую я предоставил, но на этот раз я удалил vim.tiny и вместо того, чтобы пытаться заставить vim поддерживать и python2, и python3, я просто собираю с поддержкой python3. Это исправило

Typing

python3 print("works")

в VIM, показывает works. Typing

echo has('python3')

дает мне вывод 1и, наконец,

vim --version | grep python3

Дает мне значение +python3

Спасибо, ребята, за помощь и предложения!

user1314272
источник
Попробуйте запустить настоящую команду Python, например :python print "works"; это лучший тест (по крайней мере, в интерактивном режиме; в сценарии, который я бы предпочел has('python'), который должен работать.
Инго Каркат
Если вы используете Ubuntu, используйте PPA от pi-rho ( launchpad.net/~pi-rho/+archive/ubuntu/dev ). Он имеет встроенную vim с динамической поддержкой Python / Python3.
Муру
У меня это тоже сработало!
Энрико Мария Де Анжелис

Ответы:

4

Это ожидаемый результат. Нет тестов has('python/dyn')и has('python3/dyn'), только has('python')и has('python3').

Сато Кацура
источник
5
все еще не помогает, если у меня есть ('python3') или имеет ('python'), я все еще получаю 0
user1314272
Дело в том, что вы не можете тестировать динамический Python с has()таким ... не используйте has().
romainl
2
@romainl Тогда почему это документированная функция, которую можно проверить с помощью has()under :help feature-list?
Jamessan
has('python')возвращается 1за +python и +python/dyn . То же самое для has('python3')и +python3/ +python3/dyn. Кроме того, has('python/dyn')и has('python3/dyn')всегда возвращайте 0, есть ли функция там или нет. Вывод: либо вы не можете использовать, has()чтобы определить, есть ли у вас +python[3]/dynСато Кацура, либо я не знаю, как правильно форматировать аргумент.
Ромен
1
Хотя было бы полезно, чтобы Vim поддерживал /dynпроверки, особенно has('python')если загружать библиотеку Python, а это значит, что вы не сможете ее использовать python3, и наоборот.
Jamessan