Удобно ли вам работать во встроенном интерпретаторе
Руководствуясь всеми этими причинами, я решил упростить себе жизнь и написать плагин к
python
в vim`e
? (для тех кто не в курсе команда :python
) Не думаю. Ведь там нет многого, к чему мы привыкли в нормальных интерактивных консолях, например авто-завершения или авто-отступов. Так же всё время писать :py
для ввода кода, несколько утомляет. Тут мне могут возразить, мол лучше пользоваться полноценными шелами вроде ipython
. Но тогда вы не получите доступа к внутренностям vim
с помощью одноимённого модуля, да и переключать всё время окошки тоже занятие не из весёлых.Руководствуясь всеми этими причинами, я решил упростить себе жизнь и написать плагин к
vim
, для более комфортной работы со встроенным интерпретатором.И так что же умеет мой плагин:
- авто-завершение кода
- авто-отступы при написании многострочного кода
- расширенный синтаксис (похожий на
ipython
, напримерmax?
выведет справку) - сохранение истории сессии
Для того чтобы вызвать интерпретатор, нужно выполнить команду
PyInteractiveREPL.
После чего появится стандартное приветствие python (
'>>>'
). Всё, теперь командное окно vim
переключилось в режим python
шелла. Для того чтобы закончить сеанс жмём <ESC>
.
Важное примечание, всё что вы вводили в сеансах, сохраняется между ними.
Для авто-завершения используется
Совет, если вы ходите чтобы вывод вариантов авто-завершения был более информативным, советую прописать в
<TAB>
. Совет, если вы ходите чтобы вывод вариантов авто-завершения был более информативным, советую прописать в
vimrc
следующее:set wildmode=list:longest,full
Для того чтобы отобразить историю общения с шеллом, используется команда
PyInteractiveHistory
. она поддерживает множество ключей, о которых можно узнать из документации.Пример работы с pyinteractive:
:PyInteractiveREPL >>> def inc_10(x): ... return x+10 ... >>> inc_10(7) 17 >>> import sys >>> sys.ex<tab> # (see pyinteractive-autocompletion) <built-in function exit> <ESC> :PyInteractiveEval inc_10(11) +1 22 :PyInteractiveHistory in[1]: def inc_10(x): in[2]: return x+10 in[3]: in[4]: inc_10(7) out[1]: 17 in[5]: import sys in[6]: sys.exit out[2]: <built-in function exit> in[7]: inc_10(11) +1 out[3]: 22
Видео, демонстрирующее работу плагина (старая версия)
Репозиторий плагина на github
Попробую, показалось очень интересным, я с "питоном" только начинаю. Спасибо!
ОтветитьУдалитьСергей, большая просьба, в случае использования, опишите дальнейшие пожелания по улучшению плагина.
УдалитьЯ только начинаю, попробовал и мне понравилось. Конечно нет раскраски кода, но и в python shell ее тоже нет. А так всем рекомендую!
ОтветитьУдалитьРад стараться. Подсветку тут к сожалению не организовать, в силу реализации
Удалить