2013-01-13 6 views
17

Ich habe einen Alias: alias gco='git checkout'Tabulatorvervollständigung für aliased Unter Befehle in zsh: alias GCO = 'git checkout'

Wie kann ich Tabulatorvervollständigung hinzufügen, als ob ich git checkout getippt hatte?

Für meine alias g='git' verwende ich compdef g='git'. Ich habe versucht, compdef zu verwenden, aber ich hatte keinen Erfolg.

+0

In zsh, es ist einfach funktioniert für mich sobald ich einen Alias ​​definiere (ohne 'compdef' oder irgendwas). Hast Du es versucht? –

+0

Ja, ich habe das versucht., Ich bekomme nur Dateiabschluss. –

Antwort

15

Sie müssen nichts tun, vor allem compdef g='git', es sollte ohne Konfiguration funktionieren. Sie benötigen nur etwas, wenn Sie anstelle eines Alias ​​eine Funktion verwenden.

+1

Ich bekomme nur Dateiabschluss. Ich habe bemerkt, dass oh-my-zsh compdef verwendet; https://github.com/robbyrussell/oh-my-zsh/blob/master/plugins/git/git.plugin.zsh –

+3

@ WilliamBettridge-Radford Diese Leute müssen etwas getan haben, um Standardverhalten zu deaktivieren oder nur unnötige Arbeit zu tun. Tun Sie einfach 'zsh -f autoload -UZ compinit compinit alias gco = 'git checkout' gco '. Ich sehe eine Liste von Referenzen in diesem Fall. Ein anderer Test: 'alias g = 'git' compdef g = 'hg' g ': 'compdef 'wird einfach ignoriert, ich bekomme die Komplettierung für git und nicht mercurial und benötige' compdef git =' hg'' zum Überschreiben das Verhalten (offensichtlich für Alias ​​und 'Git'). – ZyX

+0

Das hat funktioniert, danke schön. Ich benutze eine Gabel von dotfiles von Github. Ich denke, ich werde sie alle ausschalten und dann langsam wieder hinzufügen. https://github.com/holman/dotfiles –

21

Deaktivieren Sie diese Option, und Sie sind auch gut ...

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

Das hat es für mich getan. Um es deutlich zu machen, möchten Sie diese Zeile in dieser Antwort auskommentieren, damit Ihre 'config.zsh' nicht so aussieht. Sie sollten ** nicht ** die Option complete_aliases setzen, wenn Sie die Vervollständigung für Aliase haben wollen. –

1

Für mich beide complete_aliases und compdef Zugabe ist erforderlich unter Snippet Arbeit zu bekommen:

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

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