Sugiro escrever uma função de conclusão para sua função cdgit .
Coloque este arquivo chamado _cdgit em um diretório que esteja em $fpath , por exemplo. /usr/share/zsh/site-functions , depois inicie uma nova instância de shell:
#compdef cdgit
local expl
local ret=1
[[ CURRENT -eq 2 ]] && _wanted directories expl 'git toplevel directory' \
_path_files -/ -W $(git rev-parse --show-toplevel) && ret=0
return ret
Isto é emprestado de uma das últimas linhas na função _cd de conclusão, que é claro, muito mais complexa.
Demo:
/usr/src/linux-git/Documentation/x86> cd [TAB] local directory i386/ x86_64/ /usr/src/linux-git/Documentation/x86> cdgit [TAB] git toplevel directory Documentation/ crypto/ include/ lib/ scripts/ usr/ arch/ drivers/ init/ mm/ security/ virt/ block/ firmware/ ipc/ net/ sound/ certs/ fs/ kernel/ samples/ tools/