readline を使うアプリケーションでの入力を便利にする .inputrc

Linux で使われる主要なアプリケーションは,標準入力から入力を受け取るプロンプトを readline で実装していることが多い。最も有名なのは bash だろう。
実は,Ruby や Python で素朴に標準入力を受け取るプログラムを書いたときも,rlwrap コマンドを噛ましてやると,readline を使うようになる。

bash で vi モードや emacs モードの行内編集を有効化する人は多いのではないかと思うが,実はこれも readline の機能である。
つまり,これらの機能を設定するにあたり,bashrc を編集するより inputrc を編集するほうが,bash のみならず他のアプリケーションでも便利な入力機能が享受できる,というわけだ。そこで以下に私の設定を晒してみる。

set editing-mode vi
$if mode=vi
        set keymap vi-command
        Control-l: clear-screen

        set keymap vi-insert
        Control-l: clear-screen
$endif

"\C-p": history-search-backward
"\C-n": history-search-forward
TAB: complete
この設定は次の通りの機能をもつ
  • 行内編集で vi モードが使えるのでプロンプト上でやおら ESC すると hjkl で移動したり  x で削除できたりする
  • vi モードを有効化してても <C-L> でスクリーンクリアを有効化されるようにした
  • <C-P>,<C-N> で入力履歴から前方一致検索する
  • TAB での補完が効くようにした
設定ファイルのオプションの意味の説明は割愛(見ればわかるので)