zsh verfügt über ein Vervollständigungssystem, das durch Drücken der Tabulatortaste aktiviert wird:
llama@llama:~$ git st<Tab>
Completing main porcelain command
stash -- stash away changes to dirty working directory
status -- show working-tree status
Completing plumbing internal helper command
stripspace -- filter out empty lines
Ich konnte nur herausfinden, dass dies vom Skript kommt /usr/share/zsh/functions/Completion/Unix/_git
, in dem _git
der Vervollständigungsbefehl aufgerufen wird.
Angenommen, ich kenne den Namen der Vervollständigungsfunktion (zB _git
), wie könnte ich die Ausgabe dessen erhalten, was passieren würde, wenn ich eine bestimmte Zeichenfolge eingebe und die Tabulatortaste drücke? Im Wesentlichen versuche ich, eine Eingabe von zB. anzunehmen git st
und die obige Ausgabe zu erhalten (programmgesteuert, aus einem Skript).
Es gibtvieleanderebestehendeFragenumDasfürbash, aber ich habe nichts gefunden, was erklärt, wie man das mit zsh erreicht.
Antwort1
Dies kann erreicht werden durch die Verwendung vonzsh-Erfassung-Vervollständigung. Die Datei README.md des Repositorys enthält mehrere Beispiele:
capture.zsh 'vim -'
capture.zsh 'vim --'
capture.zsh 'vim --r'
capture.zsh 'echo *('
capture.zsh 'scp hostname:'
Beachten Sie, dass das Paket selbst als Proof of Concept gekennzeichnet ist und daher bei der Ausführung Fehler enthalten kann.