Wenn Sie einen Alias wie definieren alias g=git
, wird die Shell ihn übernehmen und die entsprechende Autovervollständigungsfunktion ausführen. Es gibt jetzt ein Programm namens hub
, das im Grunde eine Obermenge von Git mit einigen zusätzlichen, GitHub-spezifischen Funktionen ist. Die empfohlene Verwendungsmethode hub
ist alias git=hub
. Natürlich wird dadurch nicht die Autovervollständigungsfunktion für Git ausgelöst, was sinnvoll ist.
Wenn ich nun den Autovervollständigungstrigger von Git für Hub haben möchte, ist die einzige mir bekannte Möglichkeit, die erste Zeile als Trigger zu bearbeiten /usr/share/zsh/functions/Completion/Unix/_git
und hinzuzufügen hub
. Das funktioniert zwar, ist aber nicht praktikabel, da diese Datei mit der nächsten Zsh-Version überschrieben wird. Angenommen, Hub wird in naher Zukunft keine Zsh-Vervollständigungsfunktion bereitstellen, gibt es dann eine andere Möglichkeit, hub
die Triggerbefehle für die Autovervollständigungsfunktion von Git zu ergänzen?
Antwort1
Sie können einen zusätzlichen Autovervollständigungsordner definieren, der Ihre benutzerdefinierten Definitionen enthalten kann. Wenn Sie etwas Ähnliches wie die Standard-.zshrc haben, müssen Sie nur die$fpfadbevor Sie anrufenautoload -Uz-Komponente.
Beispiel:
...
zstyle ':completion:*' use-compctl true
zstyle ':completion:*' verbose true
zstyle :compinstall filename "$HOME/.zshrc"
fpath=($HOME/autocomplete $fpath)
autoload -Uz compinit
compinit
# End of lines added by compinstall
...
Sie sollten dann in der Lage sein, Ihr aktualisiertes _git in Ihren persönlichen Autocomplete-Ordner zu kopieren und es wird anstelle des Originals verwendet.