complete -p git
を実行すると、git
のデフォルトの完了を確認できます。
$ complete -p git
complete -o bashdefault -o default -o nospace -F __git_wrap__git_main git
ここで重要な部分は-F __git_wrap__git_main
ビットです。
あなたは__git_wrap__git_main
機能点検場合:
$ type __git_wrap__git_main
__git_wrap__git_main is a function
__git_wrap__git_main()
{
__git_func_wrap __git_main
}
をあなたはそれだけで__git_func_wrap
機能を通じて__git_main
関数を呼び出すことがわかります。 (あなたがしたい場合は、自分自身のためにそれを調べることができます。)あなたは==それはコマンドが実行さに基づいて_git_XXX
機能を検索しようとすると、案の定、_git_checkout
機能(type -t _git_checkout
があることを見__git_main
機能を見てみると
をfunction
)。
この機能は、git checkout
の補完サポートを提供します。それがあなたのカスタム関数に必要なものです。それで、あなたが完成した使用をするために必要な機能です。
これを直接呼び出すことはできませんが、これをすべて開始した__git_func_wrap
コールの設定が少し必要であることを覚えておいてください。したがって、自分でラップする必要があります。
私たちが始めた__git_wrap__git_main
の機能は(__git_main
の場合)まさにそれです。
だから我々は自分自身そのような関数を書く:その後、
__git_wrap_git_checkout() {
__git_func_wrap _git_checkout
}
とあなたの機能のための補完機能としてそれをフックアップ:
complete -o bashdefault -o default -o nospace -F __git_wrap_git_checkout git_checkout
と私達は行くために良いことがあります。
代わりに、独立したシェル関数のGitの別名として、この機能を実装すること_git_git_checkout
機能を提供し、我々はgitの補完サポートを内蔵し、のみを利用することができることを意味します(当社__git_wrap_git_checkout
関数と同じ_git_
+ alias_name
の名前は__git_main
となります)、gitは自動的に呼び出しを行います。
'git checkout'に特定の補完機能があるかどうかを確認し、それをあなたの関数にもアタッチします。しかし、私はそこにないと思う。私はgit補完関数がコマンドラインをテストしていると思うので、おそらくそれをいくつかプレイし、おそらくあなた自身の(小さな)補完関数を書く必要があります。これをgitエイリアスとして書くと、デフォルトの補完関数を使ってヘルパー関数を呼び出すことができます。 –