Next: , Up: Readline Init File


18.3.1 Readline初期化ファイルの構文

Readline初期化ファイルの中では、 ほんの少数の基本的な構文だけが使用できます。 空行は無視されます。 ‘#’で始まる行はコメントです。 ‘$’で始まる行は、 条件構文を表わします (see Conditional Init Constructs)。 その他の行は、 変数設定とキー・バインディングを示します。

変数設定
初期化ファイルの中でsetコマンドを使用してReadlineの変数の値を変更することによって、 Readlineの実行時の振る舞いを変更することができます。 デフォルトのEmacsスタイルのキー・バインディングを変更して、 viの行編集コマンドを使用できるようにするには、 以下のようにします。
          set editing-mode vi

以下の変数によって、 実行時の振る舞いのかなりの部分が変更可能です。

bell-style
Readlineが端末のベル音を鳴らしたいと判断した場合に、 何が起こるかを制御します。 ‘none’がセットされると、 Readlineはベル音を鳴らしません。 ‘visible’がセットされると、 視覚的なベル1 が利用可能であれば、 それを使います。 ‘audible’(デフォルト)がセットされると、 Readlineは、 端末のベル音を鳴らそうと試みます。
comment-begin
insert-commentコマンドが実行されたときに、 行の先頭に挿入される文字列です。 デフォルトの値は"#"です。
completion-ignore-case
on’がセットされると、 Readlineは、 大文字・小文字を区別せずに、 ファイル名のマッチングや補完を行います。 デフォルトの値は‘off’です。
completion-query-items
ユーザに対して補完候補の一覧を見たいかどうか問い合わせるタイミングを決定する、 補完候補の数です。 補完候補の数がこの値よりも多いと、 Readlineは、 補完候補の一覧を見たいかどうかをユーザに対して問い合わせることになります。 この値よりも少ない場合は、 問い合わせを行うことなく一覧を表示します。 デフォルトの境界は100です。
convert-meta
on’がセットされると、 Readlineは、 第8ビットがセットされている文字をASCIIのキー・シーケンスに変換します。 これは、 該当文字の第8ビットを落として、 その前に<ESC>文字を付加することで、 メタ・プレフィックス・キー・シーケンス(meta-prefixed key sequence) に変換することによって行われます。 デフォルトの値は‘on’です。
disable-completion
On’がセットされると、 Readlineは単語補完を抑制します。 補完文字(completion character)は、 あたかもself-insertにマップされたかのように、 行内に挿入されます。 デフォルトは‘off’です。
editing-mode
editing-mode変数は、 デフォルトで使用するキー・バインディングの種類を制御します。 Readlineは、 デフォルトの状態では、 Emacs編集モードで起動します。 このモードは、 キー・ストロークがEmacsに非常に良く似ています。 この変数は、 emacsviのどちらかに設定することができます。
enable-keypad
on’がセットされると、 Readlineは、 呼び出されたときに、 アプリケーション・キーパッド(application keypad)を有効にすることを試みます。 システムによっては、 矢印キーを使用できるようにするために、 これが必要となります。 デフォルトは‘off’です。
expand-tilde
on’がセットされると、 Readlineが単語補完を試みる際に、 チルダの展開が行われます。 デフォルトは‘off’です。
horizontal-scroll-mode
この変数は、 ‘on’と‘off’のどちらかに設定することができます。 これを‘on’に設定すると、 1行のテキストの長さがスクリーン幅よりも長い場合に、 編集中の行のテキストが次の行に折り返すことなく、 同じ行の上で水平方向にスクロールするようになります。 デフォルトでは、 この変数には‘off’がセットされています。
keymap
Readlineが認識している、 キー・バインディング・コマンドのカレントなキーマップをセットします。 セットすることのできるkeymap名は、 emacsemacs-standardemacs-metaemacs-ctlxvivi-commandvi-insertです。 vivi-commandと同等です。 また、 emacsemacs-standardと同等です。 デフォルトの値は、 emacsです。 editing-mode変数の値も、 デフォルトのキーマップに影響を及ぼします。
mark-directories
on’がセットされると、 補完されたディレクトリ名の後ろにスラッシュが付加されます。 デフォルトは‘on’です。
mark-modified-lines
この変数に‘on’がセットされると、 Readlineは、 変更されたヒストリ行の先頭にアスタリスク(‘*’)を表示します。 この変数は、 デフォルトでは‘off’です。
input-meta
on’がセットされると、 Readlineは、 8ビット入力に対する端末側のサポートがどうであれ、 8ビット入力を有効にします (読み込まれた文字の第8ビットを落としません)。 デフォルト値は‘off’です。 meta-flagは、 この変数の別名です。
output-meta
on’がセットされると、 Readlineは、 第8ビットがセットされている文字を、 メタ・プレフィックス・エスケープ・シーケンス (meta-prefixed escape sequence) としてではなく、 直接表示します。 デフォルトは‘off’です。
print-completions-horizontally
on’がセットされると、 Readlineは、 マッチする補完候補をアルファベット順にソートして、 画面の下向きにではなく、 水平方向に並べて表示します。 デフォルトは‘off’です。
show-all-if-ambiguous
補完関数のデフォルトの振る舞いを変更します。 ‘on’がセットされると、 複数の補完候補を持つ単語は、 ベル音を鳴らすことなく、 直ちに補完候補を一覧表示させます。 デフォルト値は‘off’です。
visible-stats
on’がセットされると、 補完候補を一覧表示する際に、 ファイル・タイプを示す文字がファイル名の後ろに付加されます。 デフォルトは‘off’です。

キー・バインディング
初期化ファイルの中でキー・バインディングを制御するための構文は単純です。 まず、 キー・バインディングを変更したいコマンドの名前を知っている必要があります。 以下のセクションにおいて、 コマンドの名前、 そのコマンドにデフォルトのキー・バインディングがある場合はそのバインディング、 および、 そのコマンドが何をするものであるかについての簡単な説明を、 一覧にして示します。

コマンドの名前を知っていれば、 初期化ファイルの中で、 コマンドにバインドしたいキーの名前、 コロン、 そして最後にコマンドの名前を、 1行にして記述するだけです。 キーの名前は、 好みに応じて異なる方法で表現することができます。

keynamefunction-name or macro
keynameは、 英語で記述されたキーの名前です。 例えば、 以下のようになります。
               Control-u: universal-argument
               Meta-Rubout: backward-kill-word
               Control-o: "> output"

上の例では、 <C-u>が関数universal-argumentにバインドされ、 <C-o>がその右側に記述されたマクロ (行内に‘> output’というテキストを挿入するマクロ) を実行するようバインドされます。

"keyseq": function-name or macro
前の例のkeynameとは異なり、 keyseqには、 キー・シーケンス全体を示す文字列を指定することができます。 これは、 キー・シーケンスを二重引用符で囲むことによって実現されます。 以下の例に示すように、 いくつかの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
バックスペース
\d
削除
\f
フォーム・フィード
\n
改行
\r
復帰(carriage return)
\t
水平タブ
\v
垂直タブ
\nnn
ASCIIコードが8進数値のnnn (1個以上3個以下の数字) に相当する文字
\xnnn
ASCIIコードが16進数値のnnn (1個以上3個以下の数字) に相当する文字

マクロのテキストを入力する際には、 マクロ定義であることを示すために、 単一引用符または二重引用符を使わなければなりません。 引用符に囲まれないテキストは、 関数名であると見なされます。 マクロ本体においては、 上記のバックスラッシュ・エスケープは展開されます。 バックスラッシュとそれに続く文字の組み合わせがバックスラッシュ・エスケープに該当しない場合、 マクロのテキストの中のバックスラッシュは、 ‘"’や‘'’も含めて、 直後にある文字を引用します。 例えば、 以下のバインディングによって、 ‘C-x \’は、 行内に‘\’を1つ挿入することになります。

          "\C-x\\": "\\"

脚注

[1] 訳注: ベル音を鳴らす代わりに、 画面表示をフラッシュさせることを表わしています。