Wie kann ich programmgesteuert auf die zsh-Vervollständigung zugreifen?

8

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 aus dem Skript stammt /usr/share/zsh/functions/Completion/Unix/_git, in dem _gitder Abschlussbefehl aufgerufen wird.

Angenommen, ich kenne den Namen der Abschlussfunktion (z. B. _git), wie könnte ich die Ausgabe dessen erhalten, was passieren würde, wenn ich eine bestimmte Zeichenfolge eingeben und die Tabulatortaste drücken würde? Im Wesentlichen versuche ich, eine Eingabe von ex zu nehmen. git stund erhalten Sie die Ausgabe oben (programmgesteuert aus einem Skript).

Es gibt viele andere bestehende Fragen über diese für bash, aber ich habe nichts gefunden , zu erklären , wie dies mit zsh zu erreichen.

Türknauf
quelle

Antworten:

2

Dies kann mithilfe der zsh-Capture-Vervollständigung erfolgen . 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 angibt, dass es sich um einen Proof of Concept handelt und daher Fehler in seiner Ausführung enthalten kann.

aliceinpalth
quelle