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

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


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

変数とモジュール名の補完はインタプリタの起動時に 自動的に有効化されま
す 。 従って "Tab" キーは補完機能を呼び出し、Python の文の名前、現在の
ローカル変数、および利用可能なモジュール名を検索します。"string.a" の
ようなドットで区切られた式については、最後の "'.'" までの式を評価し、
結果として得られたオブジェクトの属性から補完候補を示します。
"__getattr__()" メソッドを持ったオブジェクトが式に含まれている場合、
"__getattr__()" がアプリケーション定義のコードを実行するかもしれないの
で注意してください。デフォルトの設定ではあなたのユーザーディレクトリの
".python_history" という名前のファイルに履歴を保存します。 履歴は次の
対話的なインタプリタのセッションで再び利用することができます。


14.2. 対話的インタープリタの代替
================================

この機能は、初期の版のインタープリタに比べれば大きな進歩です。とはいえ
、まだいくつかの要望が残されています。例えば、行を継続するときに正しい
インデントが提示されたら快適でしょう (パーサは次の行でインデントトーク
ンが必要かどうかを知っています)。補完機構がインタープリタのシンボルテ
ーブルを使ってもよいかもしれません。括弧やクォートなどの対応をチェック
する (あるいは指示する) コマンドも有用でしょう。

より優れた対話的インタープリタの代替の一つに IPython があります。この
インタープリタは、様々なところで使われていて、タブ補完、オブジェクト探
索や先進的な履歴管理といった機能を持っています。他のアプリケーションに
カスタマイズされたり、組込まれこともあります。別の優れたインタラクティ
ブ環境としては bpython があります。
