Удобно ли вам работать во встроенном интерпретаторе
Руководствуясь всеми этими причинами, я решил упростить себе жизнь и написать плагин к
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 ее тоже нет. А так всем рекомендую!
ОтветитьУдалитьРад стараться. Подсветку тут к сожалению не организовать, в силу реализации
Удалить