Bashオートコンプリート:最初にファイルをリストし、次にそれらを循環します


27

最初のタブでオートコンプリートですべての可能なファイルをリストし、その後の選択で選択肢を循環させるようにbashを構成することは可能ですか?

両方のオプションは別々に簡単に実行でき、異なるキーにバインドできますが、上記は完璧ですが、ネット上でそれについて何も見つけることができません。


3
ZSHを使用してからしばらく経ちましたが、このようなオートコンプリート機能はあると思います。
ヨルダン

1
@jordanmほかに何も機能しない場合はオプションのように見えますが、それは.bashrcなどからZSHの同等のものにすべてを更新することも必要とするので、避けたいです。
Voo

回答:


31

これはあなたが望むものに近いようです:

bind "TAB:menu-complete"
bind "set show-all-if-ambiguous on"

1
最初のタブでオートコンプリートするという小さな欠陥を除けば、ほぼ完璧です。正確な名前を把握しようとしている場合は少し面倒な場合があります変更します)、しかし、私はそれで生きることをかなり喜んでいます。
Voo

1
これを簡単に元に戻すにはどうすればよいですか?
ディンガラパダム

1
bind "TAB:complete"; bind "set show-all-if-ambiguous off"
ジム・パリ

13
@Voo 3行目を追加すると、bind "set menu-complete-display-prefix on"オートコンプリートなしで最初のタブに候補がリストされます。
ネイツリー

2
@Naitreeはあなたの提案を十分に支持できません。これは機能します。デフォルトのbashの動作よりもはるかに優れています。ありがとうございました。
JBeurer

1

これは私が使用するものです。私が知る限り、それはあなたが望むものを正確に実行します。

# make tab cycle through commands after listing
bind '"\t":menu-complete'
bind "set show-all-if-ambiguous on"
bind "set completion-ignore-case on"
bind "set menu-complete-display-prefix on"

これは、Mac(10.13および10.14)およびUbuntu(16.04および18.04)で動作します。


0

考えましたか?スーパーユーザーで参照されていました...

[[ $- = *i* ]] && bind TAB:menu-complete

1
menu-complete質問の内容の半分にすぎません。質問にあるように、「[b]両方のオプションは個別に簡単に実行できます」
jw013

はい、2つのオプションのいずれかに動作を変更する方法を知っていますが、それは簡単な部分です。本当の問題は、2つを1つに結合する方法です。
Voo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.