# 14. Інтерактивне редагування введення та заміна історії

Деякі версії інтерпретатора Python підтримують редагування поточного рядка введення та заміну історії, подібно до можливостей оболонки Korn і оболонки GNU Bash. Це реалізовано за допомогою бібліотеки GNU Readline, яка підтримує різні стилі редагування. Ця бібліотека має власну документацію, яку ми не будемо тут дублювати.

## 14.1. Доповнення вкладок і редагування історії

Завершення імен змінних та модулів автоматично вмикається під час запуску інтерпретатора, так що клавіша `Tab` викликає функцію завершення; вона перевіряє імена операторів Python, поточні локальні змінні та доступні імена модулів. Для крапкових виразів, таких як `string.a`, вона обчислить вираз до останньої `'.'` та потім запропонує завершення з атрибутів отриманого об’єкта. Зверніть увагу, що це може виконати код, визначений у програмі, якщо об’єкт з методом `__getattr__()` є частиною виразу. За замовчуванням конфігурація також зберігає вашу історію у файл з ім’ям `.python_history` у вашому користувацькому каталозі. Історія буде доступна знову під час наступної сесії інтерактивного інтерпретатора.

## 14.2. Альтернативи інтерактивному інтерпретатору

This facility is an enormous step forward compared to earlier versions of the interpreter; however, some wishes are left: It would be nice if the proper indentation were suggested on continuation lines (the parser knows if an `INDENT` token is required next). The completion mechanism might use the interpreter’s symbol table. A command to check (or even suggest) matching parentheses, quotes, etc., would also be useful.

Одним з альтернативних розширених інтерактивних інтерпретаторів, який існує вже досить давно, є IPython, який включає завершення вкладок, дослідження об’єктів і розширене керування історією. Його також можна ретельно налаштувати та вбудувати в інші програми. Ще одне подібне розширене інтерактивне середовище — bpython.