Wie kann ich die zsh-Vervollständigung eher wie eine Bash-Vervollständigung verhalten?

16

Ich bin kürzlich von Bash zu Zsh konvertiert (mit dem ich "oh my zsh" verwende), aber eines nervt mich:

Wenn ich die Tabulatortaste drücke, wird die erste automatische Vervollständigung automatisch ausgefüllt, und Sie müssen durch die Vervollständigungen blättern, indem Sie wiederholt auf die Tabulatortaste drücken.

Dies unterscheidet sich von Bash, bei dem Ihnen nur eine Liste der Abschlüsse angezeigt wird. Wenn alle Vervollständigungen dasselbe Präfix haben, wird dieses Präfix ausgefüllt. Sie können die gewünschte auswählen, indem Sie weiter tippen.

Ich finde letzteres vorzuziehen, da es schneller zu tippen ist, als eine Vervollständigung durch wiederholtes Drücken der Tabulatortaste auszuwählen.

Gibt es eine Möglichkeit, die zsh-Vervollständigung in dieser Hinsicht eher wie eine Bash zu verhalten?

geistige Gesundheit
quelle

Antworten:

17
setopt noautomenu
setopt nomenucomplete

Du brauchst beide. Wenn Sie genügend oft auf die Tabulatortaste drücken, wird die Liste der Vervollständigungen angezeigt, es werden jedoch niemals Zeichen zu dem hinzugefügt, was Sie bisher eingegeben haben.

Eyal
quelle
3

Ich denke nicht, dass dies das Standardverhalten ist, aber Sie können es deaktivieren, indem Sie Folgendes verwenden:

setopt +o menucomplete

Weitere Einstellungen , die dieses Verhalten auf unterschiedliche Weise beeinflussen , gehören: autolist, automenu, bashautolist, listambiguous. Weitere man zshoptionsInformationen finden Sie im Abschnitt "Fertigstellung" von . Sie können diesen Befehl zu Ihrer ~/.zshrcDatei hinzufügen .

Sie können viele andere Dinge interaktiv konfigurieren, indem Sie Folgendes tun:

autoload -U compinstall
compinstall

und folgen Sie den Anweisungen und Menüs.

In Bash wird dieses Verhalten durch Bindung Taban completeoder menu-completein gesteuert ~/.inputrc:

"\C-i": complete   # do list completion

oder von einer Shell-Eingabeaufforderung oder in ~/.bashrc:

bind '"\C-i": menu-complete' # do menu completion
Bis auf weiteres angehalten.
quelle
1
Metakommentar: Wie haben Sie das "Tab" -Zeichen dazu gebracht, so auszusehen?
Gute Person
2
@ Gute Person:<kbd>Tab</kbd>
Bis auf weiteres angehalten.