2013年2月12日火曜日

bashのcompletionでtabキー1回で候補が出るようにする

tcshからbashにデフォルトのシェルを変えて、不満だった点のひとつに、補完(completion)時に、tabキー一発で候補が出なかったことが挙げられます。

completion機能とは、ターミナルでコマンドやファイル名を打ち込んでいる途中でtabキーやescキーを押すことにより、残りの部分や、候補を表示してくれる機能です。

例えば、compと打ってtabキーを2回押すと
$ comp<tab><tab>
compare      compileHelp  complete     composite    
compgen      compile_et   compopt      compress     
$ comp
と表示されます。<tab>はtabキーを押すことに対応したつもりです。

ここで、lと打ち込み、tabキーを押すと以下のようになります。
$ compl<tab>
$ complete

上では、2行に分けて書いていますが、実際はtabキーを押した瞬間に、残りの"ete"が自動的に追加され、キー入力が軽減されます。

ところが、以前 tcsh を使っていた時は、最初のcomp<tab><tab>の部分が、comp<tab>とtabキー1回の押打で済んでいたので、結構ストレスになっていました。
当初、bashのキーバインド機能やcompletion機能をmanページ等で調べていましたが、なかなか解決にたどりつけず、諦めかけていたのですが、やっと解決方法がわかりました。(既に数年前の話ですが)

結論ですが、~/.inputrcに以下の記述を追加することで解決しました。

set show-all-if-ambiguous on

これで、tabキー一回でcompletionが効くようになりました。

0 件のコメント:

コメントを投稿