# 14. 対話入力編集と履歴置換

いくつかのバージョンの Python インタプリタでは、Korn シェルや GNU Bash シェルに見られる機能に似た、現在の入力行に対する編集機能や履歴置換機能をサポートしています。この機能は様々な編集スタイルをサポートしている、GNU Readline ライブラリを使って実装されています。このライブラリには独自のドキュメントがあり、ここでそれを繰り返すつもりはありません。

## 14.1. タブ補完と履歴編集

変数とモジュール名の補完はインタプリタの起動時に 自動的に有効化されます 。 従って `Tab` キーは補完機能を呼び出し、Python の文の名前、現在のローカル変数、および利用可能なモジュール名を検索します。 `string.a` のようなドットで区切られた式については、最後の `'.'` までの式を評価し、結果として得られたオブジェクトの属性から補完候補を示します。 `__getattr__()` メソッドを持ったオブジェクトが式に含まれている場合、 `__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 があります。