readline − ユーザから編集機能付きで一行を受け取る |
#include <readline/readline.h> #include <readline/history.h> char *readline (prompt) char *prompt; |
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 |
上の例では、 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-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) |
~/.inputrc |
それぞれの readline 初期化ファイル |
Brian Fox, Free Software Foundation (主要作者) Chet Ramey, Case Western Reserve University |
readline のバグを見つけた場合は報告してください。しかし、まず本当にバグ であるかどうかを確認し、 readline ライブラリの最新バージョンにそのバ グ が現れることを確認してください。 バ グ が 本 当 に 存 在 す る こ と が 確 認 で き たら、バグレポートを bug−readline@gnu.org に送信してください。バグの修正がある場合はメールで 送 信 し て く だ さ い 歓 迎します。提案や「哲学的な」バグレポートは、 bug−read−line@gnu.org にメールで送信するか、 Usenet ニュース グ ルー プ gnu.bash.bug に投稿してください。 こ の マ ニュ ア ル ペー ジ に 関 す る コ メ ン ト や バグレポートは、 chet@ins.CWRU.Edu に送信してください。 |
大きすぎること、そして遅過ぎること。 |