2013-01-13 12 views
17

Mam alias: alias gco='git checkout'Zakładka aliasem polecenia sub w zsh: alias GCO = „kasie” git

Jak mogę dodać kartę ukończenie jakbym wpisane git checkout?

Dla mojego alias g='git' używam compdef g='git'.

Próbowałem użyć compdef, ale nie miałem żadnego sukcesu.

+0

W zsh, to po prostu działa dla mnie, gdy tylko zdefiniuję alias (bez 'compdef' lub czegoś podobnego). Spróbowałeś? –

+0

Tak, próbowałem tego. Po prostu kończę tworzenie plików. –

Odpowiedz

15

Nie musisz nic robić, szczególnie compdef g='git', powinien działać bez żadnej konfiguracji. Potrzebujesz czegoś tylko wtedy, gdy użyłeś funkcji zamiast aliasu.

+1

Właśnie kończę tworzenie plików. Zauważyłem, że oh-my-zsh używa compdef; https://github.com/robbyrussell/oh-my-zsh/blob/master/plugins/git/git.plugin.zsh –

+3

@ WilliamBettridge-Radford Ci ludzie musieli coś zrobić, aby wyłączyć domyślne zachowanie lub po prostu wykonać niepotrzebną pracę. Po prostu wykonaj 'zsh -f autoload -Uz compinit compinit alias gco = 'git checkout' gco '. Widzę w tym przypadku listę odwołań. Kolejny test: 'alias g = 'git' compdef g = 'hg' g ': 'compdef' jest po prostu ignorowany, dostaję zakończenie dla git i nie jest mercurial i potrzebuję' compdef git = 'hg'' do przesłonięcia zachowanie (oczywiście zarówno dla aliasu, jak i 'git'). – ZyX

+0

To zadziałało, dziękuję uprzejmie. Używam widelca plików z githubem. Myślę, że wyłączyłem je wszystkie, a potem dodałem je z powrotem powoli. https://github.com/holman/dotfiles –

21

Wyłącz tę opcję i jesteś również dobre ...

# don't expand aliases _before_ completion has finished 
# like: git comm-[tab] 
# setopt complete_aliases 
+5

Zrobiłem to za mnie. Aby to wyjaśnić, chcesz skomentować tę linię w tej odpowiedzi, nie zmieniaj swojego 'config.zsh'. Powinieneś ** nie ** ustawiać opcji complete_aliases, jeśli chcesz mieć ukończenie dla aliasów. –

1

Dla mnie dodanie oba complete_aliases i compdef jest konieczne, aby uzyskać poniżej snippet pracy:

alias docker-compose-dev='docker-compose -f docker-compose.yml -f docker-compose-dev.yml' 

compdef docker-compose-dev='docker-compose' 
setopt complete_aliases