Как открыть строку в $EDITOR, находясь в оболочке Python?

Вопрос или проблема

Как относительно новый пользователь, я недавно обнаружил трюк с открытием текущей строки терминала в $EDITOR, используя горячую клавишу C-x C-e. Это изменило мою жизнь и значительно упростило написание циклов и тому подобного.

Есть ли способ сделать это после входа в оболочку python в терминале?

Я сталкиваюсь с той же проблемой, когда пишу быстрые скрипты на python.

Использовал горячую клавишу в bash, но не могу в python

Интерпретатор python использует ту же библиотеку редактирования командной строки (libreadline), что и ваша оболочка bash, но запуск вашего $EDITOR, похоже, не основан на libreadline, он реализован самим bash.

Интерактивный интерпретатор python этого не реализует, поэтому вы не можете сделать это из python.

Однако вы можете, если используете другой интерактивный интерпретатор, отличный от стандартного python, и это, вероятно, хороший выбор, если вы хотите действительно интерактивно выполнять python. ipython позволяет редактировать текущую строку — по умолчанию, нажатием F2. (Это настраивается, если я правильно помню.)

Обычно вы найдете этот интерактивный python интерфейс в пакете, который называется python3-ipython или подобным образом.

Ответ или решение

Вопрос, заданный пользователем, касается редактирования текущей строки в интерактивной оболочке Python с использованием редактора, заданного в переменной окружения $EDITOR, аналогично тому, как это делается в оболочке bash с помощью горячих клавиш Ctrl+x, Ctrl+e. Важно понять, что функционал, который пользователь ищет, в стандартной оболочке Python отсутствует. Это связано с тем, что возможности вызова $EDITOR в bash реализованы непосредственно самой оболочкой, а не через библиотеку libreadline, которая отвечает за редактирование командной строки как в bash, так и в Python.

Теория:
В оболочке bash использование клавиш Ctrl+x, Ctrl+e позволяет открыть текущую команду в редакторе, указанном в переменной $EDITOR. Это очень полезно для редактирования длинных команд или скриптов прямо из командной строки. Однако этот функционал специфичен для bash и не распространяется на другие среды, такие как интерактивная оболочка Python. В Python используется та же библиотека libreadline для редактирования строк, но функция открытия $EDITOR реализована отдельно в bash.

Пример:
Рассмотрим пример использования iPython, который предоставляет более расширенные функции интерактивного программирования и может служить отличной альтернативой для стандартной оболочки Python. iPython поддерживает открытие текущей строки в редакторе через нажатие клавиши F2 по умолчанию, что делает его более подходящим инструментом для задач, связанных с редактированием и созданием скриптов напрямую в оболочке. Кроме того, iPython позволяет выполнять расширенные возможности, такие как автодополнение, синтаксическое подсвечивание и история сессий, что делает его более мощным инструментом для активного кодирования.

Применение:
Для того чтобы использовать возможность редактирования текущей строки в редакторе в интерактивной среде Python, рекомендуется установка и использование iPython. Процесс установки довольно прост и обычно осуществляется через пакетный менеджер, например, с использованием pip:

pip install ipython

После установки iPython, начните сессию iPython, просто введя команду:

ipython

Когда вы находитесь в интерактивном режиме iPython, можете отредактировать текущую строку или блок кода путем нажатия F2. Это откроет выделенный код в редакторе, указанном в $EDITOR, после чего любые изменения можно будет быстро сохранить и выполнить.

Таким образом, использование iPython предоставляет новый уровень контроля и удобства для отладки и написания кода в интерактивной среде, в отличие от стандартной оболочки Python. Это особенно применимо для разработчиков, которые привыкли к гибкости и мощи редактора $EDITOR в bash и хотят сохранить аналогичные возможности в работе с Python.

Кроме того, iPython может быть конфигурирован для использования других горячих клавиш или возможностей через настройки конфигурации, что добавляет еще больше возможностей для кастомизации рабочего процесса.

В заключение, можно сказать, что для более профессиональной и гибкой работы в интерактивной среде Python лучше воспользоваться iPython, а не стандартной оболочкой, что позволит интегрировать использование любимого редактора через переменную среды $EDITOR и максимизировать производительность рабочего процесса.

Оцените материал
Добавить комментарий

Капча загружается...