Usando o preenchimento automático de zsh para alias

3

Eu criei alguns aliases para git em zsh, por exemplo, gch = git checkout, grb = git rebase --committer-date-is-author-date e algumas funções zsh úteis mais complexas para comandos git. Mas como posso permitir que esses aliases usem a autocompletar zsh git?

    
por Patrick Artounian 05.01.2017 / 18:49

2 respostas

0

Eu fiz algo muito parecido. Você está usando oh-my-zsh? Nesse caso, verifique se você ativou o plug-in zsh-completions no seu arquivo .zshrc . Eu também recomendaria o plugin zsh-autosuggestions.

Depois de fazer isso, você precisará adicionar o seguinte ao seu arquivo .zshrc (se ainda não estiver lá)

fpath=(~/.zsh/completions $fpath)
autoload -U compinit && compinit

Espero que ajude!

    
por 05.01.2017 / 20:20
0

Se você abrir o arquivo que contém a definição da função autoloaded para git completion:
No meu sistema Ubuntu, é:

/usr/share/zsh/functions/Completion/Unix/_git

na parte superior do arquivo, você verá a declaração #compdef

#compdef git git-cvsserver git-receive-pack git-upload-archive git-upload-pack git-shell gitk tig

você pode tentar adicionar seus aliases à definição #compdef , por exemplo,

#compdef git git-cvsserver git-receive-pack [...] tig gch grb
                                                      ^^^ ^^^

Em seguida, iniciar um novo shell para obter essa nova diretiva carregada.
Em seguida, tente invocar a conclusão.

O que é /usr/share/zsh/functions/Completion/Unix/_git ?

É o arquivo que contém a "função" autoloaded que define o comportamento de conclusão para todos os comandos definidos na diretiva #compdef , nesse caso, a família de comandos git , que vive em fpath e é carregada automaticamente por compinit quando o sistema de completação é inicializado.

O que é #compdef ?

de man zshcompsys

#compdef name ... [ -{p|P} pattern ... [ -N name ... ] ]
The file will be made autoloadable and the function defined in it will be called when completing names, each of which is either the name of a command whose arguments are to be completed or one of a number of special contexts in the form -context- described below.

    
por 05.01.2017 / 22:13