Если вы часто открываете Python REPL — чтобы быстро протестировать идею, посчитать что-то, проверить фрагмент кода или преподавать Python — эти модификации могут серьёзно улучшить ваш опыт.
Начиная с Python 3.13, REPL поддерживает кастомные горячие клавиши, а с Python 3.14 — настройку подсветки синтаксиса.
Используя переменную окружения
PYTHONSTARTUP, можно сделать так, чтобы при запуске REPL автоматически выполнялся код из файла (например, ~/.startup.py):export PYTHONSTARTUP=$HOME/.startup.py
💡 Можно использовать библиотеку pyrepl-hacks, чтобы кастомизировать поведение REPL
Клавиатурные шорткаты:
_repl.bind("Home", "home") # В начало блока
_repl.bind("End", "end") # В конец блока
_repl.bind("Alt+M", "move-to-indentation") # В начало строки без пробелов
_repl.bind("Shift+Tab", "dedent") # Уменьшить отступ
_repl.bind("Alt+Up", "move-line-up") # Поднять строку
_repl.bind("Alt+Down", "move-line-down") # Опустить строку
_repl.bind_to_insert("Ctrl+N", "[2, 3, 5, 8]") # Быстрая вставка чисел
_repl.bind_to_insert("Ctrl+F", '["apple", "banana", "pear"]') # Быстрая вставка строкНастройка цветовой схемы (пример для Solarized Light):
_repl.update_theme(
keyword="green",
builtin="blue",
comment="intense blue",
string="cyan",
number="cyan",
definition="blue",
soft_keyword="bold green",
op="intense green",
)
🔛 Все эти хаки завязаны на приватные модули Python —
_pyrepl и _colorize.🔛 Это означает, что при обновлении Python (например, до 3.15) что-то может перестать работать.
🔛 Но при желании можно просто отключить
PYTHONSTARTUP и вернуть REPL в дефолтное состояние.💡 Фишка с sys.path
Чтобы
pyrepl-hacks работал во всех окружениях, автор добавляет путь к нему напрямую:from pathlib import Path
import sys
sys.path.append(str(Path.home() / ".pyhacks"))
Пример кастомной команды:
import pyrepl_hacks as _repl
@_repl.bind("Ctrl+X Ctrl+R", with_event=True)
def subprocess_run(reader, event_name, event):
reader.insert("import subprocess\n")
code = 'subprocess.run("", shell=True)'
reader.insert(code)
Теперь комбинация
Ctrl+X Ctrl+R автоматически вставит шаблон вызова subprocess.run().💡 Зачем всё это
🌠 Чтобы сделать REPL похожим на любимый редактор кода — быстрым, интерактивным и удобным.
🌠 А библиотека
pyrepl-hacks — просто красивая обёртка над внутренними модулями Python, которая делает эти хаки чище и проще.Попробуйте:
pip install pyrepl-hacks
🐸 Библиотека питониста
#буст