Ich habe eine benutzerdefinierte Zsh-Funktiong
:
function g() {
# Handle arguments [...]
}
Darin behandle ich kurze Argumente, die Git-Befehle ausführen. Zum Beispiel:
g ls # Executes git ls-files ...
g g # Executes git grep ...
Ich muss in der Lage sein, die Regeln für die automatische Vervollständigung für die kurzen Argumente auf Gits Regeln zu setzen, bin mir aber nicht sicher, wie ich das machen soll.
Zum Beispiel muss ich g ls <TAB>
die Regeln ausfüllen, für git ls-files <TAB>
die ich die Argumente für Folgendes erhalten würde git ls-files
:
$ g ls --<TAB>
--abbrev -- set minimum SHA1 display-length
--cached -- show cached files in output
--deleted -- show deleted files in output
# Etc...
Dies ist nicht einfach die g
automatische Vervollständigung, git
da ich meine benutzerdefinierten Kurzbefehle den Git-Befehlen zuordne.
zsh
autocomplete
git
Erik Nomitch
quelle
quelle
man git-config
.Antworten:
Ich fand heraus,
/usr/share/zsh/functions/Completion/Unix/_git
welche Tipps für Aliase wie diesen vorhanden waren, und definierte schließlich diese Funktionen für die Aliase:Dann habe ich eine Straße gemacht
compdef g=git
. Das Autocomplete-System erkennt beispielsweise, dass Sie ausgeführt werden,g ls
und verwendet die_git-ls
Autocomplete-Funktion.Vielen Dank an user67060, der mich in die richtige Richtung gelenkt hat.
quelle
Ich musste etwas sehr Ähnliches tun, also ist dies ungefähr das, was Ihr Problem lösen sollte.
Wenn Sie die Anzahl der Argumente ändern, müssen Sie die
$CURRENT
Variable anpassen .quelle
Das würde ich tun:
Dies verwendet jedoch die Vervollständigung von Git und nicht die Vervollständigung von zsh:
https://git.kernel.org/cgit/git/git.git/tree/contrib/completion/git-completion.zsh
quelle