# 14. Интерактивное редактирование ввода и подстановка истории

Некоторые версии интерпретатора Python поддерживают редактирование текущей строки ввода и подстановку из истории команд, аналогично возможностям оболочек Korn и GNU Bash. Это реализовано с помощью библиотеки GNU Readline, которая поддерживает различные стили редактирования. У этой библиотеки есть собственная документация, которую мы не будем здесь дублировать.

## 14.1. Автодополнение и редактирование истории

Автодополнение имён переменных и модулей включено автоматически при запуске интерпретатора, поэтому клавиша `Tab` вызывает функцию автодополнения, которая просматривает имена инструкций Python, текущие локальные переменные и доступные модули. Для точечных выражений, таких как `string.a`, она вычисляет выражение до последней `'.'` и затем предлагает варианты автодополнения из атрибутов полученного объекта. Обратите внимание, что это может выполнить код, определенный в приложении, если объект с методом `__getattr__()` является частью выражения. Конфигурация по умолчанию также сохраняет историю ваших команд в файл с именем `.python_history` в домашнем каталоге вашего пользователя. История будет доступна снова во время следующей интерактивной сессии интерпретатора.

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

Эта возможность — огромный шаг вперёд по сравнению с более ранними версиями интерпретатора. Тем не менее, некоторые пожелания остались: было бы неплохо, если бы предлагались правильные отступы в строках продолжения (анализатор знает, требуется ли далее токен `INDENT`). Механизм автодополнения мог бы использовать таблицу символов интерпретатора. Также была бы полезна команда для проверки (или даже предложения) парных скобок, кавычек и т.д.

Один из альтернативных улучшенных интерактивных интерпретаторов, который существует уже довольно долгое время, — это IPython, с функциями автодополнения по табуляции, исследования объектов и продвинутого управления историей. Его также можно полностью настраивать и встраивать в другие приложения. Ещё одна похожая улучшенная интерактивная среда — bpython.