Совместимый способ использования: py ИЛИ: py3 в vim? - PullRequest
7 голосов
/ 10 января 2012

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

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

Теперь я хочу проверить, скомпилирован ли python3 в Vim через has("python3"), а затем использовать :py3 вместо :py. Обеспечение совместимости кода python между python 2 и 3 не является проблемой - проблема заключается в том, чтобы указать vim использовать: py3, если доступно, и: py в противном случае.

У кого-нибудь есть хорошая идея?

Ответы [ 2 ]

6 голосов
/ 25 января 2012

Вы можете воспользоваться тем фактом, что пользовательские команды в vim - это просто операторы place-in-patter-and-eval, и написать:Команды python точно так же, как вы регулярно используете :py или :py3.

0 голосов
/ 25 января 2012

Я решил это сейчас безобразно, только проверяя ONCE для python3 или python, затем устанавливая переменную

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

, а затем выбрасывая синтаксис << EOF за борт и вместо этого вызывая каждую строку pythonчерез </p>

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

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

https://github.com/SirVer/ultisnips/blob/da49b4b7c4669bc462a98c9abc71b42d43d408bc/plugin/UltiSnips.vim

...