Linux で使われる主要なアプリケーションは,標準入力から入力を受け取るプロンプトを readline で実装していることが多い。最も有名なのは bash だろう。
実は,Ruby や Python で素朴に標準入力を受け取るプログラムを書いたときも,
bash で vi モードや emacs モードの行内編集を有効化する人は多いのではないかと思うが,実はこれも readline の機能である。
つまり,これらの機能を設定するにあたり,bashrc を編集するより inputrc を編集するほうが,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 での補完が効くようにした