次: , 前: Readline Init File Syntax, 上: Readline Init File


18.3.2 条件初期化構文

Readlineは、 Cのプリプロセッサにおける条件コンパイル機能と質的に類似した機能を実装しています。 これによって、 あるテストの結果に応じてキー・バインディングや変数設定が実行されるようにすることができます。 4種類のパーサ指示子が使われます。

$if
$ifは、 編集モード、 使用されている端末、 あるいは、 Readlineを使用しているアプリケーションに応じてバインディングが行われるようにすることを可能にします。 $ifの後ろに、 テストされる内容が行末まで続きます。 テストされる内容をほかのものと分離するために特別に文字を使う必要はありません。
mode
Readlineがemacsモードとviモードのどちらで動作しているかをテストするために、 $if指示子の一形式であるmode=が使用されます。 例えば、 Readlineがemacsモードで開始されている場合にのみ、 emacs-standardemacs-ctlxのキーマップでバインディングをセットするようにするために、 これを`set keymap'コマンドと組み合わせて使用することができます。
term
term=という形式は、 端末のファンクション・キーによって特定のキー・シーケンスが出力されるようなバインディングを行うなどの目的で、 端末固有のキー・バインディングを組み込むために使用することができます。 `='の右側の単語は、 端末の完全名と、 端末の名前のうち最初の`-'までの部分の両方に対してテストされます。 これにより、 例えばsunは、 sunsun-cmdの両方にマッチすることになります。
application
applicationは、 アプリケーション固有の設定を組み込むために使用されます。 Readlineライブラリを使用する個々のプログラムがセットするapplication name (アプリケーション名) をテストすることができます。 特定のプログラムにとって役に立つ関数に対してキー・シーケンスをバインドするために、 これを使用することができます。 例えば以下のコマンドは、 Bashにおいて、 カレントな単語、 または、 1つ前の単語を引用符で囲むキー・シーケンスを追加します。
               $if Bash
               
               # カレントな単語、または、1つ前の単語を引用符で囲む
               "\C-xq": "\eb\"\ef\""
               $endif
          

$endif
このコマンドは、 前の例が示すように、 $ifコマンドを終わらせます。
$else
$if指示子から枝分かれしたこの部分に記述されたコマンドは、 テスト結果が偽であった場合に実行されます。
$include
この指示子は、 引数としてファイル名を1つ取り、 そのファイルからコマンドとバインディングを読み込みます。
          $include /etc/inputrc