Beliebige ZSH-Vervollständigung mithilfe einer Tastenkombination

Beliebige ZSH-Vervollständigung mithilfe einer Tastenkombination

Manchmal ist für einen Befehl keine Vervollständigung installiert – oder er akzeptiert syntaktisch eine ganze Reihe von Argumenttypen, wodurch die Vervollständigung nahezu nutzlos wird. Beispielsweise kann „git checkout“ den Namen einer beliebigen von Git verfolgten Datei annehmen.oderder Name eines beliebigen Verweises oder eines anderen baumartigen Elements. Es können auch einige Optionsflags verwendet werden. Das sind eine Menge möglicher Vervollständigungen.

Wenn ich weiß, dass ich beispielsweise einen Zweigstellennamen vervollständigen möchte, gibt es eine Möglichkeit, eine Taste zum Vervollständigen zu verknüpfen oder ein Menü mit Zweigstellennamen anzuzeigen? (Und das Gleiche gilt für jede Vervollständigungskategorie.)

Das scheint möglich und sinnvoll, aber ich habe noch nie gesehen, dass es umgesetzt wird.

Antwort1

Ja, das ist möglich. Folgendes habe ich ursprünglich von einer der zsh-Mailinglisten erhalten, aber ich weiß nicht mehr, wer es gepostet hat:

zle -C complete-file complete-word _generic
zstyle ':completion:complete-file::::' completer _files
bindkey '^x^f' complete-file

Dies könnte leicht angepasst werden, um anstelle von eine andere Vervollständigungsfunktion zu verwenden _files.

Die erste Zeile definiert ein neues Vervollständigungs-Widget mit dem Namen, complete-filedas sich wie das integrierte complete-wordWidget verhält und die _genericFunktion zum Generieren der Liste der Vervollständigungen verwendet.

Die zweite Zeile konfiguriert es dann so, dass der Vervollständiger bei Verwendung dieses benutzerdefinierten Widgets nur _filesdie Liste der Vervollständigungen abruft.

Anschließend bindet die dritte Zeile das neue Widget an eine Tastenfolge.

verwandte Informationen