Wie kann ich dafür sorgen, dass sich die zsh-Vervollständigung wie die Bash-Vervollständigung verhält?

12

Ich bin zu zsh gewechselt, aber ich mag die Fertigstellung nicht. Wenn ich beim Drücken der Tabulatortaste 20 Dateien mit jeweils einem gemeinsamen Präfix habe, vervollständigt zsh die erste Datei vollständig und geht die Liste bei jedem Drücken der Tabulatortaste weiter durch. Wenn ich gegen Ende eine haben möchte, müsste ich mehrmals die Tabulatortaste drücken.

In Bash war das einfach - drücke die Tabulatortaste und ich würde das Präfix bekommen. Wenn ich weiter tippe (und die Tabulatortaste drücke), wird die Bash so weit wie möglich abgeschlossen. Ich finde dieses Verhalten viel intuitiver, bevorzuge aber die anderen Funktionen von zsh gegenüber bash.

Gibt es eine Möglichkeit, diesen Abschlussstil zu erreichen? Google schlug vor setopt bash_autolist, aber dies hatte keine Auswirkungen auf mich (und beim Starten meiner Shell wurde keine Fehlermeldung gedruckt).

Vielen Dank.

nsm
quelle

Antworten:

7

Versuchen:

setopt autolist
unsetopt menucomplete
Bis auf weiteres angehalten.
quelle
Funktioniert ziemlich gut, nicht genau das gleiche, aber es ist definitiv etwas, woran ich mich gewöhnen kann. Vielen Dank!
Nsm
8

Was Sie wollen, ist wahrscheinlich Folgendes:

setopt noautomenu
ggustafsson
quelle
1
(10 Jahre später) Die akzeptierte Antwort hatte für mich keine (offensichtliche) Wirkung. Dies war genau das, was ich wollte und wie es scheint, hat das OP darum gebeten.
Jer
1

Es gibt eine andere Option, wenn Sie die Option "Menüauswahl" in .zshrc wie folgt verwenden:

autoload -U compinit
compinit
zstyle ':completion:*:*:*:*:*' menu select

Sie können mit den Pfeiltasten durch das Ergebnis navigieren. Nehmen wir Ihr Beispiel mit "20 Dateien mit einem gemeinsamen Präfix":

  • Wenn Sie zum ersten Mal [TAB] drücken, wird zsh so viel wie möglich vervollständigen und dann eine Liste der Möglichkeiten anzeigen
  • Dann können Sie entweder wie in Bash abschließen (geben Sie ein zusätzliches Zeichen ein, gehen Sie zu 0).
  • oder geben Sie [TAB] erneut ein, und dann werden die möglichen Auswahlmöglichkeiten im Menü unter Ihrer Shell-Eingabeaufforderung hervorgehoben. Bonus können Sie mit Ihren Pfeiltasten in den Möglichkeiten navigieren

Am Ende, um die letzte Möglichkeit zu erreichen:

  • mit Bash drückst du bestenfalls [TAB], dann ein zusätzliches Zeichen und dann wieder [TAB] (vielleicht mehr)
  • Mit Zsh drücken Sie erneut [TAB], dann [TAB] (um das Menü aufzurufen) und dann "<-" (linke Pfeiltaste), um die letzten Elemente zu erreichen

Beide sind in diesem Fall 3 Tastenanschläge. Der Rest ist meistens Geschmackssache.

jbbarth
quelle