Совместимый способ использования: py или: py3 в Vim?

StackOverflow https://stackoverflow.com/questions/8805247

Вопрос

В моем .vimrc И мой плагин vim ultisnips у меня есть много кода, который выглядит так

:py << EOF
print("Hi")
EOF

Теперь я хочу проверить, скомпилируется ли Python3 в VIM через has("python3") а затем используйте :py3 вместо :py. Анкет Сохранение совместимого кода Python между Python 2 и 3 не является проблемой - проблема состоит в том, чтобы сказать Vim для использования: py3, если доступен, и: иначе py.

У кого -то хорошая идея?

Это было полезно?

Решение

Вы можете воспользоваться тем, что команды, определенные пользователем в VIM, являются просто помещениями и заместителями, и напишите:

if has("python3")
    command! -nargs=1 Py py3 <args>
else
    command! -nargs=1 Py py <args>
endif

Тогда вы можете использовать :Py запускать команды Python так же, как вы регулярно используете :py или же :py3.

Другие советы

Я решил это сейчас уродливым образом, проверив только один раз на Python3 или Python, а затем установив переменную

let g:_uspy=":py "   or ":py3 "

и затем бросить << EOF синтаксис за борт и вместо этого вызовите каждую линию Python через

exec g:_uspy "print('Hello')"

который, кажется, работает Окайш. Смотрите полное решение в этой Git Blob:

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top