### ナビゲーション

- 索引
- モジュール |
- 次へ |
- 前へ |
- Python 2.7ja1 documentation »
- Python 標準ライブラリ »
- 16. オプションのオペレーティングシステムサービス »

# 16.8. `readline` — GNU readline のインタフェース

`readline` モジュールでは、補完をしやすくしたり、ヒストリファイルを Python インタプリタから読み書きできるようにするためのいくつかの関数を定義しています。このモジュールは直接使うことも `rlcompleter` モジュールを介して使うこともできます。このモジュールで利用される設定はインタプリタの対話プロンプトの振舞い、組み込みの `raw_input()` と `input()` 関数の振舞いに影響します。

`readline` モジュールでは以下の関数を定義しています:

`readline.``parse_and_bind`(string)

  readline 初期化ファイルの行を一行解釈して実行します。

`readline.``get_line_buffer`()

  行編集バッファの現在の内容を返します。

`readline.``insert_text`(string)

  コマンドラインにテキストを挿入します。

`readline.``read_init_file`([filename])

  readline 初期化ファイルを解釈します。標準のファイル名設定は最後に使われたファイル名です。

`readline.``read_history_file`([filename])

  readline ヒストリファイルを読み出します。標準のファイル名設定は `~/.history` です。

`readline.``write_history_file`([filename])

  readline ヒストリファイルを保存します。標準のファイル名設定は `~/.history` です。

`readline.``clear_history`()

  現在のヒストリをクリアします。 (注意:インストールされている GNU readline がサポートしていない場合、この関数は利用できません)

  バージョン 2.4 で追加.

`readline.``get_history_length`()

  ヒストリファイルに必要な長さを返します。負の値はヒストリファイルのサイズに制限がないことを示します。

`readline.``set_history_length`(length)

  ヒストリファイルに必要な長さを設定します。この値は `write_history_file()` がヒストリを保存する際にファイルを切り詰めるために使います。負の値はヒストリファイルのサイズを制限しないことを示します。

`readline.``get_current_history_length`()

  現在のヒストリ行数を返します(この値は `get_history_length()` で取得する異なります。 `get_history_length()` はヒストリファイルに書き出される最大行数を返します)。

  バージョン 2.3 で追加.

`readline.``get_history_item`(index)

  現在のヒストリから、 index 番目の項目を返します。

  バージョン 2.3 で追加.

`readline.``remove_history_item`(pos)

  ヒストリから指定した位置にあるヒストリを削除します。

  バージョン 2.4 で追加.

`readline.``replace_history_item`(pos, line)

  指定した位置にあるヒストリを、指定した line で置き換えます。

  バージョン 2.4 で追加.

`readline.``redisplay`()

  画面の表示を、現在のヒストリ内容によって更新します。

  バージョン 2.3 で追加.

`readline.``set_startup_hook`([function])

  startup_hook 関数を設定または除去します。 function が指定されていれば、新たな startup_hook 関数として用いられます; 省略されるか `None` になっていれば、現在インストールされているフック関数は除去されます。 startup_hook 関数は readline が最初のプロンプトを出力する直前に引数なしで呼び出されます。

`readline.``set_pre_input_hook`([function])

  pre_input_hook 関数を設定または除去します。 function が指定されていれば、新たな pre_input_hook 関数として用いられます; 省略されるか `None` になっていれば、現在インストールされているフック関数は除去されます。 pre_input_hook 関数は readline が最初のプロンプトを出力した後で、かつ readline が入力された文字を読み込み始める直前に引数なしで呼び出されます。

`readline.``set_completer`([function])

  completer 関数を設定または除去します。 function が指定されていれば、新たな completer 関数として用いられます; 省略されるか `None` になっていれば、現在インストールされている completer 関数は除去されます。 completer 関数は `function(text, state)` の形式で、関数が文字列でない値を返すまで state を `0`, `1`, `2`, ..., にして呼び出します。この関数は text から始まる文字列の補完結果として可能性のあるものを返さなくてはなりません。

`readline.``get_completer`()

  completer 関数を取得します。completer 関数が設定されていなければ `None` を返します。

  バージョン 2.3 で追加.

`readline.``get_completion_type`()

  実行中の補完のタイプを取得します。

  バージョン 2.6 で追加.

`readline.``get_begidx`()

  readline タブ補完スコープの先頭のインデクスを取得します。

`readline.``get_endidx`()

  readline タブ補完スコープの末尾のインデクスを取得します。

`readline.``set_completer_delims`(string)

  タブ補完のための readline 単語区切り文字を設定します。

`readline.``get_completer_delims`()

  タブ補完のための readline 単語区切り文字を取得します。

`readline.``set_completion_display_matches_hook`([function])

  補完表示関数を設定あるいは解除します。 function が指定された場合、それが新しい補完表示関数として利用されます。省略されたり、 `None` が渡された場合、既に設定されていた補完表示関数が解除されます。補完表示関数は、マッチの表示が必要になるたびに、 `function(substitution, [matches], longest_match_length)` という形で呼び出されます。

  バージョン 2.6 で追加.

`readline.``add_history`(line)

  1 行をヒストリバッファに追加し、最後に打ち込まれた行のようにします。

参考

Module `rlcompleter`
  対話的プロンプトで Python 識別子を補完する機能。

## 16.8.1. 例

以下の例では、ユーザのホームディレクトリにある `.pyhist` という名前のヒストリファイルを自動的に読み書きするために、 `readline` モジュールによるヒストリの読み書き関数をどのように使うかを例示しています。以下のソースコードは通常、対話セッションの中で `PYTHONSTARTUP` ファイルから読み込まれ自動的に実行されることになります。

    import os
    import readline
    histfile = os.path.join(os.path.expanduser("~"), ".pyhist")
    try:
        readline.read_history_file(histfile)
    except IOError:
        pass
    import atexit
    atexit.register(readline.write_history_file, histfile)
    del os, histfile

次の例では `code.InteractiveConsole` クラスを拡張し、ヒストリの保存・復旧をサポートします。

    import code
    import readline
    import atexit
    import os

    class HistoryConsole(code.InteractiveConsole):
        def __init__(self, locals=None, filename="<console>",
                     histfile=os.path.expanduser("~/.console-history")):
            code.InteractiveConsole.__init__(self, locals, filename)
            self.init_history(histfile)

        def init_history(self, histfile):
            readline.parse_and_bind("tab: complete")
            if hasattr(readline, "read_history_file"):
                try:
                    readline.read_history_file(histfile)
                except IOError:
                    pass
                atexit.register(self.save_history, histfile)

        def save_history(self, histfile):
            readline.write_history_file(histfile)

### ナビゲーション

- 索引
- モジュール |
- 次へ |
- 前へ |
- Python 2.7ja1 documentation »
- Python 標準ライブラリ »
- 16. オプションのオペレーティングシステムサービス »