web-dev-qa-db-ja.com

スマートタブ補完(ディレクトリ用)?

よりインテリジェントなタブ補完を備えたシェルバージョンはありますか?

入力できるようにしたい

cd foo-<TAB>

次に、可能な補完と、それらの1つを選択するために入力できる番号が表示されます。

cd foo-<TAB>
(1) foo-bar1  (2) foo-bar2  (3) foo-bad

したがって、<TAB>の後に3と入力すると、foo-badに移動します。または、数字を入力する代わりに矢印キーを使用することもできます。

7
dehmann

Bashでmenu-completeを有効にすると、Tabキーを押すたびにコマンドラインのエントリをステップスルーできます。これは本当にあなたが探しているものではありません。試してみたい場合は、コマンドプロンプトでこれを実行します。

bind '"\C-i": menu-complete'

それを持続させるには、これを~/.inputrcファイルに追加します。

"\C-i": menu-complete

Zshには、矢印キーを使用してエントリを選択できる機能があります。これ(または別のバリエーション)を~/.zshrcファイルに追加します。

zstyle ':completion:*' menu select=0

詳細については、man zshcompsysを参照し、「select =」(menu「標準スタイル」のセクションにあります)を検索してください。

それ以外の場合、Bashでは、selectコマンドに基づいて何かを実行する関数を作成する(または独自の完了関数を作成する)ことができます。これは非常に単純です。

$ select a in x y z; do cd $a; done
1) x
2) y
3) z
#?

あなたはそれがあなたが望むことをするようにするためにそれをたくさん肉付けしなければならないでしょう。

すでに通常の完了を使用していますか?試してみてください

complete -d cd pushd rmdir

シェルで、必要なものに十分近いかどうかを確認します。

Bashよりも完成度の高いzshを試すこともできます。

9
Rich Homolka