
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-file
das sich wie das integrierte complete-word
Widget verhält und die _generic
Funktion 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 _files
die Liste der Vervollständigungen abruft.
Anschließend bindet die dritte Zeile das neue Widget an eine Tastenfolge.