2016-12-01 9 views
3

何回もサブ関数を楽しみに完了:Zshの機能:私は、例えば、既存のものの周りにラッパー関数を足す終わる

function gl { 
    some_computed_stuff=... 
    git --no-pager log --reverse $some_computed_stuff "[email protected]" 
} 
function m { 
    make "[email protected]" && notify-send success || notify-send failed 
} 

を私は別名が自動補完を維持するが、時には機能が必要とされており、その場合には自動補完が失われたことを知っています。 ここでは、私の機能glまたはmakeの完了をmのためにgit logの完了を保ちたいと思います。

compctl -K _git glを追加しようとしましたが、提案はありません。

glを入力するとあることを理解ZSH(だけでなく、bashの)を作るための方法があります:私は何とか私の質問があるので、同様log引数_gitへの自動補完スクリプトを提供する方法を見つけなければならないので、それはとにかく動作しません。 git logと正確に等価ですか? (ZSH用のみ)のようなもの:zshのために

compctl 'git log' gl 
compctl 'make' m 

答えて

5

は、あなたがcompdef機能を持つ新しい完了を作成することができます。

基本形式では、補完関数を単語に関連付けます。 zshには既に多くの補完機能が組み込まれていれば、それらを再利用できます。例えば、質問からm機能のために:1を補完関数で定義されている場合のドキュメントを1として

$ compdef _make m 

、あなたはまた、特定のサービスの完了を定義することができます。 zshのが_git完了が付属していますし、それがすでにgit-logサービスを定義し、質問からgl機能がで自動補完することができるよう再度、:Linuxでは

$ compdef _git gl=git-log 

、あなたは/usr/share/zsh/functions/Completion/Unix/で、既存の完了の実装を見ることができます。補完実装を読み、定義されているサービスを確認することができます。

関連する問題