READLINE(3)

名称
readline - ユーザから編集機能付きで一行を受け取る

書式

#include <readline/readline.h>
#include <readline/history.h>

char *readline (prompt)
char *prompt;

COPYRIGHT
Readline is Copyright (C) 1989, 1991, 1993, 1995, 1996 by the Free Software Foundation, Inc.

解説

readline は、プロンプトとして prompt を使用し、端末から一行を読み込み、その値を返します。 prompt が NULL である場合、プロンプトは出力されません。 返された行には malloc(3) を使ってメモリが割り当てられているので、 呼び出し側は終了時にメモリを解放しなければなりません。 返された行では末尾の改行は削除されており、 行のうちのテキストのみが残ります。

readline は、ユーザが行を入力している間の編集機能を提供します。 デフォルトでは、行編集コマンドは、 emacs のそれに似ています。 vi スタイルの 編集インタフェースも使用できます。

戻り値

readline は、読み込んだ行のテキストを返します。 空行は空の文字列を返します。 EOF が行を読込んでいるときに現れ、かつ、その行が空のときは、 NULL を返します。 行が空でないときに EOF が読み込まれたときは、 これは改行として扱われます。

表記法

キーストロークの表記では emacs スタイルの表記法が使用されます。 コントロールキーは、 C-key と表記します。 たとえば C-n は、 Control-N を表します。 メタキーは、 M-x と表記します。 つまり M-x は、Meta-X を表します。 ( メタキーがないキーボードの場合、 M-x は ESC x を表します。 つまりエスケープキーを押してから x キーを押すことを表します。 これは ESC をメタ・プレフィックスとします。 複合操作の M-C-x は、ESC-Control-x を表します。 つまり、エスケープキーを押し、次にコントロールキーを押しながら x キーを押すことを表します。 )

readline コマンドは、数値引数を取ることがあります。 通常の場合、この引数は繰り返しの回数として動作します。 しかし、場合によっては、重要な意味を持ちます。 前方に向かって作用するコマンド (kill-line など ) に負の引数を渡すと、 このコマンドは後方に向かって作用します。 引数を与えられたときのふるまいが これとは異なるコマンドには説明が付けられています。

コマンドがテキストを「削除」 (kill) するとして記述されている場合、 消去されたテキストは、後で取り戻せるように保存 ( ヤンク yank ) されます。 削除されたテキストは、削除リング (kill ring) に保存されます。 連続して削除した場合は、テキストは 1 つのユニットに蓄積され、 1 度に全部をヤンクできるようになります。 テキストを削除しないコマンドは、 削除リング (kill ring) 上のテキストの塊の区切りとなります。

初期化ファイル

readline は、初期化ファイル (inputrc) にコマンドを置くすることでカスタマイズされます。 このファイルの名前は、環境変数 INPUTRC の値から取られます。 この環境変数が設定されていない場合は、デフォルトの ~/.inputrc が使用されます。 readline ライブラリを使用しているプログラムを起動すると、 初期化ファイルが読み込まれてキーバインディングと変数が設定されます。 readline 初期化ファイルでは、 ほんの 2,3 の基本的な構造構文のみが許可されています。 空白行は無視されます。 # で始まる行はコメントとみなされます。 $ で始まる行は条件文とみなされます。 その他の行はキーバインディングと変数の設定を表します。 このライブラリを使用している各プログラムは、 独自のコマンドとバインディングを追加することができます。

以下の例を参照してください。

    M-Control-u: universal-argument
や
    C-Meta-u: universal-argument
を inputrc に置くと、 M-C-u で readline のコマンド universal-argument が実行されます。

キーのバインディングを行なっているときは、 次のシンボリックキャラクタ名 RUBOUT, DEL, ESC, LFD, NEWLINE, RET, RETURN, SPC, SPACE, TAB が認識されます。 さらにコマンド名に加え、 readline はキーを押したときに文字列が挿入されるように キーにバインドするようにもできます。 ( マクロ )

  キーバインド
inputrc ファイルの中でキーバインドを制御する文法は単純です。 必要なものは、コマンドの名前かマクロのテキスト、 そしてそれにバインドするキーシーケンスのみです。 名前は 2 つの方法のどちらかで指定できます。 1 つは、シンボリックなキーの名前で指定する方法、これは 場合によっては Meta- や Control- プレフィックスがつきます。 もう 1 つは、キーシーケンスを指定する方法です。 keyname:function-name または、 keyname:macro という形式を使用した場合、 keyname は英語で綴られたキーの名前になります。 例えば、

    Control-u: universal-argument
    Meta-Rubout: backward-kill-word
    Control-o: ">&output"

上の例では、 C-u が univesal-argument にバインドされ、 M-DEL が backward-kill-word にバインドされ、 C-o が右辺に記述されているマクロ ( ここではテキスト >&output をその行に挿入する ) の実行にバインドされます。

2 番目の、 "keyseq":function-name または "keyseq":macro という形式では、 キーシーケンス ( keyseq ) は、 キーシーケンス全体を表す文字列を二重引用符で囲んで指定するという 点で前出のキー名 ( keyname ) とは異なります。 以下の例のように、 GNU Emacs のスタイルのキーエスケープが使用できます。

    "\C-u": universal-argument
    "\C-x\C-r": re-read-init-file
    "\e[11~": "Function Key 1"

この例では、 C-u は再び universal-argument にバインドされ、 C-x C-r は re-read-init-file にバインドされ、 ESC [ 1 1 ~ はテキスト Function Key 1 の挿入にバインドされています。 GNU Emacs スタイルのエスケープシーケンスの一覧を以下に示します。
    \C- コントロールプレフィックス
    \M- メタプレフィックス
    \e  エスケープキャラクタ
    \\  バックスラッシュ
    \"  文字「"」
    \'  文字「'」

GNU Emacs スタイルのエスケープシーケンスの他に、 以下のようなバックスラッシュによるエスケープも使用できます。
    \a  警告 ( ベル )
    \b  後退 (backspace)
    \d  消去 (delete)
    \f  改ページ (form feed)
    \n  改行 (newline)
    \r  復帰 (carriage return)
    \t  水平タブ
    \v  垂直タブ
    \nnn
        ASCII コードが 8 進値 nnn ( 1 桁 から 3 桁 ) である文字
    \xnnn
        ASCII コードが 16 進値 nnn ( 1 桁 から 3 桁 ) である文字

マクロのテキストを入力する場合は、 一重引用符か二重引用符を使用してマクロ定義を表してください。 引用符で囲まれていないテキストは機能名とみなされます。 マクロ本体では、 上記のバックスラッシュによるエスケープが展開されます。 バックスラッシュは、「"」と「'」も含め、 マクロテキストのどのキャラクタをもクォートします。

bash では、現在の readline のキーバインディングを bind 組み込みコマンドを用いて 表示したり修正したりすることができます。 編集モードは、 -o オプションを set 組み込みコマンドに使用することで、 対話形式で使用しながら切り替えることもできます。 このライブラリを使用している他のプログラムは、同様の機構を提供します。 新しいバインディングを組み入れるための他の手段を、 プログラムが提供していない場合であっても inputrc ファイルを編集して再読込みすることもできます。

  変数
readline には、動作をさらにカスタマイズするための変数があります。 変数は、以下の書式で inputrc ファイルの中で設定できます。

    set variable-name value

特に断らない限り、 readline の変数は On か Off の値を取ります。 変数とそのデフォルト値は以下のとおりです。

bell-style (audible)
    readline で端末ベルを鳴らそうとするときの処理方法を制御します。 none に設定すると、 readline はベルを鳴らしません。 visible に設定すると、 readline は可能ならば 可視化ベル (visible bell) を使用します。 audible に設定すると、 readline は端末のベルを鳴らそうとします。
comment-begin (``#'')
    insert-comment コマンドを実行したときに vi モードで挿入される文字列です。 このコマンドは、 emacs モードでは M-# に、 vi コマンドモードでは # にバインドされています。
completion-ignore-case (Off)
    On に設定すると、 readline は、 大文字と小文字を区別せずに (case-insensitive) ファイル名のマッチと補完を行います。
completion-query-items (100)
    possible-completions コマンドが生成した補完候補を 表示するかどうかをユーザに問い合わせるときの個数です。 これはゼロ以上の整数値に設定してください。 補完候補の数がこの変数の値以上になると、 ユーザに補完候補を表示するかどうかを問い合わせます。 それ以外のときは単純に候補の一覧を端末に表示します。
convert-meta (On)
    On に設定すると、 readline は 8 番目のビットがセットされている文字を、 8 番目のビットを取り去って (strip) エスケープキャラクタを前につけるやり方で、 ASCII のキーの並びに変換します。 ( メタプレフィックスとしてエスケープキーを使用しているようになります )
disable-completion (Off)
    On に設定すると、 readline は単語の補完を抑制するようになります。 補完文字 (completion character) は self-insert にマップされたかのように 行に挿入されるようになります。
editing-mode (emacs)
    readline を emacs と同様のキーバインディングで始めるか、 vi と同様のキーバインディングで始めるかを制御します。 editing-mode は、 emacs か vi に設定できます。
enable-keypad (Off)
    On に設定すると、 readline は呼び出されたときに アプリケーションキーパッドを使えるようにしようとします。 一部のシステムでは、矢印キーを使えるようにするために この設定が必要です。
expand-tilde (Off)
    on に設定すると、 readline が単語を補完しようとしたときに チルダの展開が行なわれます。
horizontal-scroll-mode (Off)
    On に設定すると、 readline は表示に 1 行しか使用しなくなります。 入力が画面の幅より長くなった場合は、 新しい行に折り返すのではなく、 画面の 1 行で水平に入力をスクロールします。
keymap (emacs)
    現在の readline キーマップを設定します。 適切なキーマップ名は、 emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-command, vi-insert です。 vi は vi-command と同じで、 emacs は emacs-standard と同じです。 デフォルト値は emacs です。 editing-mode の値もデフォルトキーマップに影響します。
mark-directories (On)
    On に設定すると、 補完されたディレクトリ名に スラッシュが付けられます。
mark-modified-lines (Off)
    On に設定すると、修正された履歴行 (history line) は、 アスタリスク (*) を先頭につけて表示されます。
meta-flag (Off)
    On に設定すると、 readline は、 端末がこれをサポートできるかどうかに関わらず、 8 ビット入力を可能にします。 ( つまり、読み込んだ文字から上位ビットを取り去りません。)
output-meta (Off)
    On に設定すると、 readline は、 8 番目のビットがセットされた文字を、 メタプレフィックスエスケープシーケンスとしてではなく、 直接表示するようになります。
print-completions-horizontally (Off)
    On に設定すると、 readline は マッチした補完候補の一覧を、 画面の垂直方向ではなく水平方向に、 アルファベット順でソートして 表示するようになります。
show-all-if-ambiguous (Off)
    補完機能のデフォルトの動作を変更します。 On に設定すると、 補完候補の語が 1 よりも多いとき、 ベルを鳴らさずに即座にマッチしたものを一覧表示します。
visible-stats (Off)
    On に設定すると、補完候補の一覧を表示するときに stat(2) が報告するファイルタイプを表すキャラクタが ファイル名に付け加えられます。

  条件コンストラクト
readline は、 C プリプロセッサの条件コンパイル機能と 根本的に同様の機能を実現しています。 これはキーバインドと変数設定を 条件判定の結果に従って実行することを可能にします。 ここでは、4 つの命令が使用できます。

$if $if コンストラクトは、 編集モード、使用している端末、readline を使用しているアプリケーションに 関連づけてバインドすることを可能にします。 条件判定のテキストはその行の最後まで続きます。 区分するための文字はありません。

    mode
        $if ディレクティブの mode= という形式は readline が emacs モードになっているか vi モードになっているかを 判定するのに用いられます。 これは set keymap コマンドとともに使用されることでしょう。 例えば、readline が emacs モードで起動している場合に限って、 emacs-standard キーマップと emacs-ctlx キーマップに バインディングを設定する、というようにです。

    term
        term= という形式は、 端末のファンクションキーを押すとキーの並びを出力するようにバインドする、 というように、 端末に固有なキーバインドを含めるために用いられることでしょう。 = の右側のワードは、端末のフルネームと、 最初の - の前までの端末名の一部とに対して判定されます。 たとえば sun は sun と sun-cmd の両方とに一致します。

    application
        application コンストラクトは アプリケーションに固有な設定を含めるために用いられます。 readline ライブラリを使用している各プログラムは application name を設定し、 初期化ファイルはその値を判定することができます。 これを使用すると、特定のプログラムにとって便利な機能に キーシーケンスをバインドする、といったことが可能です。 たとえば以下のコマンドは、 bash の現在の語か前の語を引用符でくくるキーシーケンスを追加します。

        $if bash
        # Quote the current or previous word
        "\C-xq": "\eb\"\ef\""
        $endif

$endif
    上の例に出てくるこのコマンドは、$if コマンドを終了するものです。

$else
    $if ディレクティブの分岐の中で出てくるこのコマンドは、 判定が偽のときに実行されます。

$include
    このディレクティブは 1 つのファイル名を引数として取り、 そのファイルからコマンドとバインディングを読み込みます。 たとえば以下のディレクティブでは、 /etc/inputrc が読み込まれます。

    $include  /etc/inputrc

検索

readline には、コマンド履歴から特定の文字列を含む行を検索する コマンドがあります。 検索モードには、増分 ( incremental ) と非増分 ( non-incremental ) の 2 つのモードがあります。

増分検索は、ユーザが検索文字列を入力し終わる前に開始します。 検索文字列の各文字が入力されるたびに、 readline は、それまでに入力された文字列と一致した履歴の、 次のエントリを表示します。 増分検索では、目的の履歴エントリの検索に必要となる最低限の文字のみが 必要となります。 エスケープ文字を使用すると増分検索を終了できます。 Control-J も検索を終了できます。 Control-G は増分検索を中断 (abort) し、元の行に戻します。 検索が終了すると、検索文字列を含む履歴エントリが現在の行となります。 履歴リストの中の、一致する他のエントリを探すには、 Control-S か Control-R を必要なだけ入力します。 これは それまでに入力した検索文字列と一致するような次の行を探して 履歴を後方や前方に検索します。 readline コマンドにバインドされた他のキーシーケンスが使用されると、 検索を終了してそのコマンドを実行します。 たとえば、 newline が使用されると 検索を終了してその行を受け付けるので、 その履歴リストにあった該当するコマンドが実行されます。

非増分検索は、検索文字列全体を読み込んでから検索を開始し、 一致する履歴行を探します。 検索文字列は、ユーザが入力したものであったり、 現在の行の内容の一部であったりします。

編集コマンド
以下は、コマンド名と、 バインドされているデフォルトのキーシーケンスの一覧です。 キーシーケンスが記載されていないコマンドには、 デフォルトではバインドされていません。

  移動コマンド

beginning-of-line (C-a)
    現在行の先頭に移動します。
end-of-line (C-e)
    その行の末尾に移動します。
forward-char (C-f)
    1 文字進みます。
backward-char (C-b)
    1 文字戻ります。
forward-word (M-f)
    次の語の末尾に進みます。 単語は、英数字 ( 英文字と数字 ) で構成されています。
backward-word (-b)
    現在の語の先頭か前の語に戻ります。 単語は、英数字 ( 英文字と数字 ) で構成されています。
clear-screen (C-l)
    現在の行を画面の最上位に残して画面をクリアします。 引数がある場合は、画面をクリアせずに現在の行をリフレッシュします。
redraw-current-line
    現在の行をリフレッシュします。

  履歴操作コマンド

accept-line (Newline, Return)
    カーソルの位置に関わらずに行を受け付けます。 この行が空でない場合は、履歴リストに追加します。 この行が履歴行を修正したものである場合は、 該当する履歴行を元の状態に戻します。
previous-history (C-p)
    履歴リストを戻り、リストから前のコマンドを取り出します。
next-history (C-n)
    履歴リストを進め、リストから次のコマンドを取り出します。
beginning-of-history (M-<)
    履歴の最初の行に移動します。
end-of-history (M->)
    入力履歴の最後に移動します。たとえば現在入力している行です。
reverse-search-history (C-r)
    現在の行から必要なだけ履歴を「上へ」移動しながら後方検索します。 これは増分検索です。
forward-search-history (C-s)
    現在の行から必要なだけ履歴を「下へ」移動しながら前方検索します。 これは増分検索です。
non-incremental-reverse-search-history (M-p)
    非増分検索でユーザが指定した文字列を探し、 現在の行から履歴を後方に検索します。
non-incremental-forward-search-history (M-n)
    非増分検索でユーザが指定した文字列を前方に検索します。
history-search-forward
    現在行の先頭と カーソルの現在位置 (ポイント point) の間にある文字列を探し、 履歴を前方に検索します。 これは非増分検索です。
history-search-backward
    現在行の先頭とポイントの間にある文字列を探し、 履歴を前方に検索します。 これは非増分検索です。
yank-nth-arg (M-C-y)
    前のコマンドの 1 番目の引数 ( 通常は前の行の 2 番目の語 ) を ポイント ( カーソルの現在位置 ) に挿入します。 引数 n がある場合は、 前のコマンドの n 番目の語 ( 前のコマンドの語は 0 番目から始まります ) を挿入します。 引数が負のときは、 前のコマンドの末尾から n 番目の語を挿入します。
yank-last-arg (M-., M-_)
    前のコマンドの最後の引数 ( 前の履歴エントリの最後の語 ) を挿入します。 引数があるときは、yank-nth-arg とまったく同じようにふるまいます。 yank-last-arg を連続して呼び出すと、 各行の最後の引数を挿入しながら履歴リストを戻ります。

  テキスト変更コマンド

delete-char (C-d)
    カーソルの下の文字を消去します。 ポイントが行の先頭にあり、 その行に文字がなく、 最後に入力した文字が delete-char にバインドされていない場合は EOF を返します。
backward-delete-char (Rubout)
    カーソルの前にある文字を消去します。 数値引数があるときは、 消去されたテキストを削除リングに保存します。
quoted-insert (C-q, C-v)
    次に入力された文字をそのまま行に追加します。 これは、 C-q のような文字を挿入する方法です。
tab-insert (M-TAB)
    タブ文字を挿入します。
self-insert (a, b, A, 1, !, ...)
    入力された文字を挿入します。
transpose-chars (C-t)
    ポイントの前の文字をポイントの文字の後にドラッグします。 ポイントも後ろに移動します。 ポイントが行末にある場合は、 ポイントの前の 2 つの文字を入れ替えます。 負の引数は動作しません。
transpose-words (M-t)
    カーソルの前の語をカーソルの後ろの語にドラッグ します。カーソルもその語の上に移動します。
upcase-word (M-u)
    現在の語 ( またはその後の語 ) を大文字にします。 負の引数があるときは 前の語が大文字になりますが、ポイントは移動しません。
downcase-word (M-l)
    現在の語 ( またはその後の語 ) を小文字にします。 負の引数があるときは 前の語が小文字になりますが、ポイントは移動しません。
capitalize-word (M-c)
    現在の語 ( またはその後の語 ) の頭文字を大文字にします。 負の引数があるときは 前の語の頭文字を大文字にしますが、ポイントは移動しません。

  削除 (kill) とヤンク

kill-line (C-k)
    現在のカーソルの位置から行末までのテキストを削除 (kill) します。
backward-kill-line (C-x Rubout)
    行頭まで後方に削除します。
unix-line-discard (C-u)
    ポイントから行頭まで後方に削除します。 削除されたテキストは削除リングに保存されます。
kill-whole-line
    カーソル位置に関わらず、現行ラインのすべてのキャラクタを 消去します。
kill-word (M-d)
    カーソルから現在の語の末尾まで、 単語間の場合は次の語の末尾までを消去します。 単語境界は、 forward-word で使用するものと同じです。
backward-kill-word (M-Rubout)
    カーソルの後ろの語を消去します。 単語境界は、 backward-word で使用するものと同じです。
unix-word-rubout (C-w)
    空白を単語境界として使用し、カーソルの前のワードを削除します。 単語境界は backward-kill-word とは異なります。
delete-horizontal-space (M-\)
    ポイント周囲のすべての空白とタブを消去します。
kill-region
    ポイントとマーク ( 保存されたカーソル位置 ) の間のテキストを 削除します。 このテキストは、リージョン (region) として参照されます。
copy-region-as-kill
    リージョンのテキストを削除バッファにコピーします。
copy-backward-word
    ポイントの前の語を削除バッファにコピーします。 単語境界は backward-word と同じです。
copy-forward-word
    ポイントの次の語を削除バッファにコピーします。 単語境界は forward-word と同じです。
yank (C-y)
    削除リングの最上位をカーソル位置のバッファにヤンクします。
yank-pop (M-y)
    削除リングを回転し、新しく最上位になったものをヤンクします。 yank か yank-pop の後でしか動作しません。

  数値引数
digit-argument (M-0, M-1, ..., M--)
    すでに蓄積されている引数にこの数字を追加するか、 新しい引数を開始します。 M-- は、負の引数を開始します。
universal-argument
    引数を指定する別の方法です。 このコマンドに 1 つ以上の数字が続く場合、 もしくはマイナス記号の後に 1 つ以上の数字が続く場合 はこの数字が引数になります。 このコマンドに数字が続く場合、 universal-argument を再度実行することで数値引数は終わりますが、それ以外の場合は無視されます。 特別な場合として、 このコマンドの直後に数字やマイナス記号以外の文字が続くときは、 次のコマンドの引数の数値は 4 倍されます。 初期状態での引数の数値は 1 なので、 この機能を最初に実行すると引数の数値は 4 になり、 2 回実行すると引数の数値は 16 になる、というようになります。

  補完 (completion)

complete (TAB)
    ポイントの前のテキストで補完 (completion) を実行します。 実際の補完はアプリケーションに固有です。 たとえば、 bash は、それぞれ、 変数 ( テキストが $ で始まる場合 ) 、 ユーザ名 ( テキストが ~ で始まる場合 ) 、 ホスト名 ( テキストが @ で始まる場合 ) 、 コマンド ( エイリアスと関数を含む場合 ) としてテキストを扱い、補完を実行します。 これらに当てはまらない場合は ファイル名の補完が実行されます。 一方、 gdb ではプログラムの関数と変数の補完が認められており、 特定の状況でのみファイル名補完が試みられます。
possible-completions (M-?)
    ポイントの前のテキストについての補完候補一覧を表示します。
insert-completions (M-*)
    ポイントの前のテキストについて、 possble-completions によって生成された 全ての補完候補を挿入します。
menu-complete
    complete に似ていますが、 補完候補の一覧のうちの一つを用いて補完し、語を置き換えます。 menu-complete を繰り返し実行すると、 一致するものを順番に挿入しながら、 補完候補の一覧を一つずつ進みます。 補完候補一覧の末尾に達するとベルが鳴り、 元のテキストが復元されます。 引数 n は、補完候補一覧を n だけ進みます。 負の引数はリストを戻ります。 このコマンドは、 TAB にバインドされることを想定していますが、 デフォルトではバインドされていません。

  キーボードマクロ

start-kbd-macro (C-x ()
    キーボードから入力された文字の、 現在のキーボードマクロへの保存を開始します。
end-kbd-macro (C-x ))
    キーボードから入力された文字の、 現在のキーボードマクロへの保存を停止します。
call-last-kbd-macro (C-x e)
    キーボードから入力されたかのように、 マクロ中のキャラクタを表示し、 最後に定義されたキーボードマクロを再実行します。

  その他

re-read-init-file (C-x C-r)
    inputrc ファイルの内容を読み込み、 そのファイルで見つかったバインドや変数割当てを組み込みます。
abort (C-g)
    現在の編集コマンドを中断し、端末ベルを鳴らします。 ( bell-style の設定に従います )
do-uppercase-version (M-a, M-b, M-x, ...)
    メタ化 (metafy) された文字 x が小文字である場合、 相当する大文字にバインドされたコマンドを実行します。
prefix-meta (ESC)
    次に入力された文字をメタ化します。 ESC f は Meta-f と同等です。
undo (C-_, C-x C-u)
    各行で個別に記憶される、増分取り消し (incremental undo)です。
revert-line (M-r)
    この行に行なわれた変更の全てを取り消します。 これは undo コマンドをこの行で必要なだけ繰り返し、 初期状態に戻すことに似ています。
tilde-expand (M-~)
    現在の語にチルダ展開を実行します。
set-mark (C-@, M-<space>)
    現在のポイントにマークします。 数値引数を指定すると、マークはその場所に設定されます。
exchange-point-and-mark (C-x C-x)
    マークとポイントを入れ換えます。 カーソルの現在位置は保存された位置に設定され、 古いカーソル位置はマークとして保存されます。
character-search (C-])
    文字が読み込まれ、その文字と次に一致する場所へポイントが移動します。 負の数を使用すると、前の方で一致するものが検索されます。
character-search-backward (M-C-])
    文字が読み込まれ、前の方でその文字と一致する場所へポイントが移動します。 負の数を使用すると、後の方で一致するものが検索されます。
insert-comment (M-#)
    readline の comment-begin 変数の値が現在行の先頭に挿入され、 改行が入力されたかのようにその行が受け付けられます。 これにより、現在行がシェルのコメントになります。
dump-functions
    すべての機能名とそのキーバインドを readline の出力ストリームに印字します。 数値引数を指定すると、出力は inputrc ファイルの一部にできるようにフォーマットされます。
dump-variables
    すべての設定可能な変数とその値を readline の出力ストリームに印字します。 数値引数を指定すると、出力は inputrc ファイルの一部にできるようにフォーマットされます。
dump-macros
    マクロにバインドされたすべての readline キーシーケンス、 およびそれが出力するストリングを印字します。 数値引数を指定すると、出力は inputrc ファイルの一部にできるようにフォーマットされます。
emacs-editing-mode (C-e)
    vi 編集モードになっている場合に、 emacs 編集モードに切り替えます。
vi-editing-mode (M-C-j)
    emacs 編集モードになっている場合に、 vi 編集モードに切り替えます。

デフォルトのキーバインド

以下は、デフォルトの emacs バインドと vi バインドのリストです。 第 8 ビットがセットされている文字は、 M-<character> と表記します。 これは、メタ化された文字を表します。 emacs 標準バインドのリストに載っていない、 印字可能な ASCII 文字は、 self-insert 機能に結び付けられています。 この機能は、与えられた文字を入力行に挿入します。 vi 挿入モードの場合、 特筆していないすべての文字は self-insert にバインドされています。 C-Z や C-C のような、 stty(1) や端末ドライバでシグナルの生成に割り当てられている文字は、 その機能を保持します。 メタ化された大文字と小文字の文字は、 emacs モードのメタキーマップと同じ機能にバインドされています。 残りの文字はバインドされておらず、 そういった文字を使用すると、 readline は ( bell-style 変数の設定に従って ) ベルを鳴らします。

  Emacs モード

    emacs 標準バインド

    "C-@"  set-mark
    "C-A"  beginning-of-line
    "C-B"  backward-char
    "C-D"  delete-char
    "C-E"  end-of-line
    "C-F"  forward-char
    "C-G"  abort
    "C-H"  backward-delete-char
    "C-I"  complete
    "C-J"  accept-line
    "C-K"  kill-line
    "C-L"  clear-screen
    "C-M"  accept-line
    "C-N"  next-history
    "C-P"  previous-history
    "C-Q"  quoted-insert
    "C-R"  reverse-search-history
    "C-S"  forward-search-history
    "C-T"  transpose-chars
    "C-U"  unix-line-discard
    "C-V"  quoted-insert
    "C-W"  unix-word-rubout
    "C-Y"  yank
    "C-]"  character-search
    "C-_"  undo
    " " to "/"  self-insert
    "0"  to "9"  self-insert
    ":"  to "~"  self-insert
    "C-?"  backward-delete-char

    emacs メタキーバインド

    "M-C-G"  abort
    "M-C-H"  backward-kill-word
    "M-C-I"  tab-insert
    "M-C-J"  vi-editing-mode
    "M-C-M"  vi-editing-mode
    "M-C-R"  revert-line
    "M-C-Y"  yank-nth-arg
    "M-C-["  complete
    "M-C-]"  character-search-backward
    "M-space"  set-mark
    "M-#"  insert-comment
    "M-&"  tilde-expand
    "M-*"  insert-completions
    "M--"  digit-argument
    "M-."  yank-last-arg
    "M-0"  digit-argument
    "M-1"  digit-argument
    "M-2"  digit-argument
    "M-3"  digit-argument
    "M-4"  digit-argument
    "M-5"  digit-argument
    "M-6"  digit-argument
    "M-7"  digit-argument
    "M-8"  digit-argument
    "M-9"  digit-argument
    "M-<"  beginning-of-history
    "M-="  possible-completions
    "M->"  end-of-history
    "M-?"  possible-completions
    "M-B"  backward-word
    "M-C"  capitalize-word
    "M-D"  kill-word
    "M-F"  forward-word
    "M-L"  downcase-word
    "M-N"  non-incremental-forward-search-history
    "M-P"  non-incremental-reverse-search-history
    "M-R"  revert-line
    "M-T"  transpose-words
    "M-U"  upcase-word
    "M-Y"  yank-pop
    "M-\"  delete-horizontal-space
    "M-~"  tilde-expand
    "M-C-?"  backward-delete-word
    "M-_"  yank-last-arg

    emacs コントロールキーバインド

    "C-XC-G"  abort
    "C-XC-R"  re-read-init-file
    "C-XC-U"  undo
    "C-XC-X"  exchange-point-and-mark
    "C-X("  start-kbd-macro
    "C-X)"  end-kbd-macro
    "C-XE"  call-last-kbd-macro
    "C-XC-?"  backward-kill-line

  VI モードバインド

    VI 挿入モード機能名

    "C-D"  vi-eof-maybe
    "C-H"  backward-delete-char
    "C-I"  complete
    "C-J"  accept-line
    "C-M"  accept-line
    "C-R"  reverse-search-history
    "C-S"  forward-search-history
    "C-T"  transpose-chars
    "C-U"  unix-line-discard
    "C-V"  quoted-insert
    "C-W"  unix-word-rubout
    "C-Y"  yank
    "C-["  vi-movement-mode
    "C-_"  undo
    " " to "~"  self-insert
    "C-?"  backward-delete-char

    VI コマンドモード機能名

    "C-D"  vi-eof-maybe
    "C-E"  emacs-editing-mode
    "C-G"  abort
    "C-H"  backward-char
    "C-J"  accept-line
    "C-K"  kill-line
    "C-L"  clear-screen
    "C-M"  accept-line
    "C-N"  next-history
    "C-P"  previous-history
    "C-Q"  quoted-insert
    "C-R"  reverse-search-history
    "C-S"  forward-search-history
    "C-T"  transpose-chars
    "C-U"  unix-line-discard
    "C-V"  quoted-insert
    "C-W"  unix-word-rubout
    "C-Y"  yank
    " "  forward-char
    "#"  insert-comment
    "$"  end-of-line
    "%"  vi-match
    "&"  vi-tilde-expand
    "*"  vi-complete
    "+"  next-history
    ","  vi-char-search
    "-"  previous-history
    "."  vi-redo
    "/"  vi-search
    "0"  beginning-of-line
    "1" to "9"  vi-arg-digit
    ";"  vi-char-search
    "="  vi-complete
    "?"  vi-search
    "A"  vi-append-eol
    "B"  vi-prev-word
    "C"  vi-change-to
    "D"  vi-delete-to
    "E"  vi-end-word
    "F"  vi-char-search
    "G"  vi-fetch-history
    "I"  vi-insert-beg
    "N"  vi-search-again
    "P"  vi-put
    "R"  vi-replace
    "S"  vi-subst
    "T"  vi-char-search
    "U"  revert-line
    "W"  vi-next-word
    "X"  backward-delete-char
    "Y"  vi-yank-to
    "\"  vi-complete
    "^"  vi-first-print
    "_"  vi-yank-arg
    "`"  vi-goto-mark
    "a"  vi-append-mode
    "b"  vi-prev-word
    "c"  vi-change-to
    "d"  vi-delete-to
    "e"  vi-end-word
    "f"  vi-char-search
    "h"  backward-char
    "i"  vi-insertion-mode
    "j"  next-history
    "k"  prev-history
    "l"  forward-char
    "m"  vi-set-mark
    "n"  vi-search-again
    "p"  vi-put
    "r"  vi-change-char
    "s"  vi-subst
    "t"  vi-char-search
    "u"  undo
    "w"  vi-next-word
    "x"  vi-delete
    "y"  vi-yank-to
    "|"  vi-column
    "~"  vi-change-case

関連項目
The Gnu Readline Library, Brian Fox and Chet Ramey
The Gnu History Library, Brian Fox and Chet Ramey
bash(1)

関連ファイル
それぞれの readline 初期化ファイル

作者
Brian Fox, Free Software Foundation (主要作者)
bfox@ai.MIT.Edu

Chet Ramey, Case Western Reserve University
chet@ins.CWRU.Edu

バグレポート
readline のバグを見つけた場合は報告してください。 しかし、まず本当にバグであるかどうかを確認し、 readline ライブラリの最新バージョンにそのバグが現れることを確認してください。

バグが本当に存在することが確認できたら、 バグレポートを bug-readline@gnu.org に送信してください。 バグの修正がある場合はメールで送信してください歓迎します。 提案や「哲学的な」バグレポートは、 bug-read-line@gnu.org にメールで送信するか、 Usenet ニュースグループ gnu.bash.bug に投稿してください。

このマニュアルページに関するコメントやバグレポートは、 chet@ins.CWRU.Edu に送信してください。

バグ

大きすぎること、そして遅過ぎること。