2013-01-13 19 views
17

私は別名があります。alias gco='git checkout'タブ補完:別名GCO =「Gitのチェックアウト」

私はgit checkoutを入力したかのように私はタブ補完を追加することができますどのように?

私のalias g='git'については、compdef g='git'を使用します。

私はcompdefを使用しようとしていましたが、何も成功しませんでした。

+0

、それだけで私はエイリアスを定義するとすぐに私のために働きます( 'compdef'や何もない)。それを試しましたか? –

+0

はい、私はそれを試みました。 –

答えて

15

何もする必要はありません。特にcompdef g='git'を設定する必要はありません。何も設定する必要はありません。エイリアスの代わりに関数を使用した場合にのみ、何かが必要になります。

+1

ファイルの補完が完了しました。私はoh-my-zshがcompdefを使用していることに気付きました。 https://github.com/robbyrussell/oh-my-zsh/blob/master/plugins/git/git.plugin.zsh –

+3

@ WilliamBettridge-Radfordこれらの人々は、デフォルトの動作を無効にするか、不必要な仕事をするために何かをしているに違いありません。 'zsh -f autoload -Uz compinit compinit 別名gco = 'git checkout' gco 'を実行するだけです。この場合、私はrefのリストを見る。もう1つのテスト: 'alias g = 'git' compdef g = 'hg' g ': 'compdef'は単に無視されますが、私はgitでは完了し、水銀ではなく、' compdef git = 'hg'' (エイリアスと 'git'の両方のために)明らかに動作します。 – ZyX

+0

それはうまくいきました。私はgithubからドットファイルのフォークを使用しています。私はそれらをすべてオフにしてゆっくりと戻すと思います。 https://github.com/holman/dotfiles –

21

無効にこのオプションと、あなたも良いです...私はcomplete_aliasescompdefの両方を追加するための

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

これは私のためでした。明確にするために、あなたは 'config.zsh'をそのように見せるのではなく、この応答の行をコメントアウトします。エイリアスの完成を希望する場合は** complete ** ** **オプションを設定しないでください**。 –

1

は、スニペットの仕事の下に取得する必要がある:zshので

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

compdef docker-compose-dev='docker-compose' 
setopt complete_aliases 
関連する問題