Vervollständigungsliste in zsh dynamisch aktualisieren

13

Ich finde die Ergebnislisten von zsh für die TabVervollständigung recht nützlich, möchte ihr Verhalten jedoch ein wenig ändern:

Sie sollten erscheinen, wenn ich Tabzum ersten Mal und danach dynamisch mit jedem neuen Buchstaben aktualisiert. Das Standardverhalten ist, dass die Vorschläge nur neu ausgewertet werden, wenn Sie Taberneut, ich möchte diesen wiederholten Tastendruck speichern. ( Update: Aber nur die möglichen Vervollständigungen auflisten, es sollte nicht automatisch meine aktuelle Eingabeaufforderungszeile ändern, auch wenn es nur noch eine Option gibt.)

Gibt es eine Möglichkeit, ein solches Verhalten zu erreichen?

F30
quelle
Sie können ziemlich tief in zshdas Verhalten des Customizings eintauchen. Was soll genau passieren? Momentan lautet diese Frage, als ob Sie möchten, dass die Auswahlmöglichkeiten bei jedem Tastendruck nach dem ersten TAB aufgelistet werden , aber damit ist eigentlich nichts erledigt. Sollte sich jeder Tastendruck so verhalten, als würde ihm ein Tabulator folgen? Bedenken Sie, dass dies für unbeabsichtigte Fertigstellungen einen erheblichen Rückschritt bedeuten würde.
5.
@ user112553 Die erste Option: In diesem Sinne sollte es sich eigentlich nicht wie ein wiederholtes TAB verhalten. Ich möchte nur die Vorschlagsliste dynamisch anpassen.
F30

Antworten:

2

Ein Weg, der die gewünschte Lösung bieten könnte, ist incremental-complete-word:

zle -N incremental-complete-word
bindkey '^Xi' incremental-complete-word

Dies lädt die Funktion und bindet sie an Ctrl- X i. Jetzt können Sie es versuchen:

> k^Xi
incremental (complete): -no prefix-

In diesem Beispiel wurde der Buchstabe keingegeben, gefolgt von Control-X i.

> kil
incremental (complete): kill       

Ich habe getippt ilund jetzt gab es eine mögliche Vervollständigung ( kill). Man könnte das akzeptieren und die Eingabetaste drücken.

> kill^D
incremental (complete): -no prefix-
- external command -
kill      killall   killall5

Durch Eingabe Ctrl- Ddie zsh zeigt mögliche Abschlüsse.

Von zshcontrib(1):

inkrementelles-vollständiges-Wort
Dies ermöglicht die inkrementelle Vervollständigung eines Wortes. Nach dem Starten dieses Befehls kann nach jedem eingegebenen Zeichen eine Liste der Abschlussoptionen angezeigt werden, die Sie mit ^Hoder löschen können DEL. Drücken Sie die Eingabetaste, um die Fertigstellung zu bestätigen und zur normalen Bearbeitung zurückzukehren (dh die Befehlszeile wird nicht sofort ausgeführt). Sie können auf klicken, TABum die normale Fertigstellung ^G durchzuführen, den Status beim Start wiederherzustellen und ^Ddie Übereinstimmungen aufzulisten.

qbi
quelle