#navi_header|技術| readlineとは、CUIプログラムにおいてコマンド履歴機能やTABキーによる補完機能を実現するのに使われるGPLライブラリ。 inputrcはreadlineの設定ファイル。 デフォルトのキーバインドはEmacsとよく似ている。 bash上からは以下のコマンドでキーバインドをemacs風/vi風に切り替えることが出来る。 $ set -o vi # vi風のキー・バインドに変更 $ set -o emacs # emacs風のキー・バインドに変更 設定ファイル(inputrc)の読み込み順序は以下の通り。 + INPUTRC環境変数が設定されていれば、そのファイルを読み込む。 + INPUTRC環境変数が未設定であれば、$HOME/.inputrc を読み込む。 inputrcの変更を反映するには、readlineをリンクしているプログラムを再起動するか、bashであれば"C-x C-r"を入力する。 inputrcの書式は「set 変数名 値」の順になる。値は「on」か「off」のどちらかが多い。 : キー・バインド(editing-mode) : #pre||> set editing-mode vi (vi風) set editing-mode emacs (emacs風) ||< : 補完時の大文字・小文字を無視(completion-ignore-case) : #pre||> set completion-ignore-case on (無視) set completion-ignore-case off (無視しない) ||< : 日本語対応(-meta) : #pre||> set output-meta on set input-meta on set convert-meta off ||< : ブザーを鳴らす(ビープ音)・鳴らさない(bell-style) : #pre||> set bell-style visible # audible : ビープ音を鳴らす。 # none : 鳴らさない。 # visible : 鳴らさない代わりに画面を点滅。 ||< : その他の変数 : - expand-tilde : 「on」だと「~/.inputrc」は「/home/user/.inputrc」と表示される。 - mark-directories : 「on」にするとディレクトリ名の補完時に最後にスラッシュ「/」がつく。 - match-hidden-files : 「on」にすると、「.」から始まる隠しファイルも補完対象になる。 - show-all-if-ambiguous : 複数の補完候補があった場合に、Tabキーを一回押しただけで補完候補の一覧を表示するかどうか。デフォルトは"off"。 - visible-status : 補完候補を表示する際に、ファイルタイプを示す文字(「/」や「*」など)をファイル名に付けるかどうかを設定する。デフォルトは"off"。 参考URL : - "UNIXの部屋 コマンド検索:readline (BSD/Linux)" -- http://x68000.q-e-d.net/~68user/unix/pickup?readline - "UNIXの部屋 コマンド検索:~/.inputrc (BSD/Linux)" -- http://x68000.q-e-d.net/~68user/unix/pickup?~%2F.inputrc 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を子プロセスに流し込むブリッジになる。 #navi_footer|技術|