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.


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"

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).


0

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

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.