Совместимый способ использования: py или: py3 в Vim?
-
26-10-2019 - |
Вопрос
В моем .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: