readlineとは、CUIプログラムにおいてコマンド履歴機能やTABキーによる補完機能を実現するのに使われるGPLライブラリ。
inputrcはreadlineの設定ファイル。
デフォルトのキーバインドはEmacsとよく似ている。
bash上からは以下のコマンドでキーバインドをemacs風/vi風に切り替えることが出来る。
$ set -o vi # vi風のキー・バインドに変更 $ set -o emacs # emacs風のキー・バインドに変更
設定ファイル(inputrc)の読み込み順序は以下の通り。
inputrcの変更を反映するには、readlineをリンクしているプログラムを再起動するか、bashであれば"C-x C-r"を入力する。
inputrcの書式は「set 変数名 値」の順になる。値は「on」か「off」のどちらかが多い。
set editing-mode vi (vi風) set editing-mode emacs (emacs風)
set completion-ignore-case on (無視) set completion-ignore-case off (無視しない)
set output-meta on set input-meta on set convert-meta off
set bell-style visible # audible : ビープ音を鳴らす。 # none : 鳴らさない。 # visible : 鳴らさない代わりに画面を点滅。
参考URL :
readlineはGPL。NetBSDにおいては、BSDライセンスによる同等のライブラリ、libeditを開発した。
現在、sf.net上にNetBSDよりスピンアウトして独立したlibeditプロジェクトがある。
http://sourceforge.net/projects/libedit/
GPLの制限を逃れる為のもう一つの方策として、"rlwrap"というOSSも出現した。
http://freshmeat.net/projects/rlwrap
$ rlwrap ruby
のように実行する。引数をforkした子プロセスにて実行し、自身は入出力ファイルディスクリプタのI/Oを子プロセスに流し込むブリッジになる。
コメント