Bash-Autovervollständigung: Zuerst Dateien auflisten, dann durchlaufen

27

Ist es möglich, bash so zu konfigurieren, dass auf der ersten Registerkarte "Autocomplete" alle möglichen Dateien aufgelistet werden und bei den folgenden die Auswahlmöglichkeiten durchlaufen werden?

Beide Optionen lassen sich leicht separat ausführen und ich könnte sie an verschiedene Schlüssel binden, aber das oben Genannte wäre perfekt, aber ich kann im Internet nichts dazu finden.

Voo
quelle
3
Es ist schon eine Weile her, dass ich ZSH verwendet habe, aber ich glaube, dass die automatische Vervollständigung so funktioniert.
Jordan
1
@jordanm Nun, es scheint eine Option zu sein, wenn nichts anderes funktioniert, aber das würde auch bedeuten, dass alles von .bashrc usw. auf die ZSH-Entsprechungen aktualisiert wird, was ich gerne vermeiden würde.
Voo

Antworten:

31

Dies scheint genau das zu sein, was Sie wollen:

bind "TAB:menu-complete"
bind "set show-all-if-ambiguous on"
Jim Paris
quelle
1
Fast perfekt, abgesehen von dem kleinen Fehler, dass es auch auf der ersten Registerkarte automatisch vervollständigt wird, was etwas ärgerlich sein kann, wenn ich nur versuche, den genauen Namen herauszufinden (dh ich muss ein bisschen mehr Zeichen löschen, wenn ich möchte) dann ändern), aber ich bin durchaus bereit, damit zu leben.
Voo
1
Wie kann dies leicht rückgängig gemacht werden?
Dingalapadum
1
bind "TAB:complete"; bind "set show-all-if-ambiguous off"
Jim Paris
13
@Voo add the third line bind "set menu-complete-display-prefix on"listet nur die Kandidaten auf der ersten Registerkarte ohne automatische Vervollständigung auf.
Naitree,
2
@Naitree kann Ihren Vorschlag nicht genug unterstützen. Es funktioniert und IST so viel besser als das Standard-Bash-Verhalten. Vielen Dank.
JBeurer
1

Das ist was ich benutze. Soweit ich das beurteilen kann, macht es genau das, was Sie wollen.

# 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"

Dies funktioniert auf Mac (10.13 & 10.14) und Ubuntu (16.04 & 18.04).

Milo
quelle
0

Hast du darüber nachgedacht? Es wurde bei Superuser verwiesen ...

[[ $- = *i* ]] && bind TAB:menu-complete
basteln
quelle
1
menu-completeist nur die Hälfte dessen, was die Frage stellt. Wie die Frage besagt, "[b] sind andere Optionen einfach separat zu machen" .
jw013
Ja, ich weiß, wie ich das Verhalten in eine der beiden Optionen ändern kann, aber das ist der einfache Teil. Das eigentliche Problem ist, wie man die beiden zu einem verbindet.
Voo