Eu tenho uma função Zsh personalizadag
:
function g() {
# Handle arguments [...]
}
Dentro dele, trato de breves argumentos que executam comandos Git. Por exemplo:
g ls # Executes git ls-files ...
g g # Executes git grep ...
Eu preciso ser capaz de definir as regras de preenchimento automático para as regras do Git para os breves argumentos, mas não tenho certeza de como fazer isso.
Por exemplo, preciso g ls <TAB>
preencher com tabulação as regras git ls-files <TAB>
que me forneceriam os argumentos para 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...
Isso não é simplesmente definir o g
preenchimento automático, git
pois estou mapeando meus comandos curtos personalizados para os comandos Git.
zsh
autocomplete
git
Erik Nomitch
fonte
fonte
man git-config
.Respostas:
Eu descobri
/usr/share/zsh/functions/Completion/Unix/_git
que tinha algumas dicas para aliases como este e acabei definindo essas funções para os aliases:Então, eu fiz uma sequência
compdef g=git
. O sistema de preenchimento automático verá que você está executando, por exemplo,g ls
e usará a_git-ls
função de preenchimento automático.Agradeço ao user67060 por me guiar na direção certa.
fonte
Eu tive que fazer algo muito semelhante, então é isso que deve resolver o seu problema.
Uma coisa a observar é que, se você alterar o número de argumentos, precisará ajustar a
$CURRENT
variável.fonte
Isto é o que eu faria:
No entanto, isso está usando a conclusão do Git, não a conclusão do zsh:
https://git.kernel.org/cgit/git/git.git/tree/contrib/completion/git-completion.zsh
fonte