質問

zshには、と呼ばれる関数があります g これは次のように動作します:

  • 引数なしで呼び出します git status
  • 1 つ以上の引数を指定して、指定されたすべての引数を指定して git にデリゲートします。つまり、電話 git $@

タブ補完が欲しいです g とまったく同じになる git. 。これを達成できるのは、 alias g=git, 、でも電話をかけることはできません status デフォルトでは (上記の最初の点)。

完了まで委任するにはどうすればよいですか git?

bashでは、私は単にそうしました complete -F _git g これは git の補完機能を再利用します。zsh を使用すると、git の補完はさらに複雑になるため、同様の解決策を見つけることができません。

zsh には、「コマンド [x] を入力したふりをします。何を完成させますか?」という関数があると思います。それが何であるかを知っていれば、関数を使用してそれに委任するのは簡単なはずです。しかし、マニュアルにはそのような機能は見つかりませんでした。

役に立ちましたか?

解決

compdef のためのドキュメントは、これが言います:

  

関数compdefは新しいコマンドと既存の補完機能を関連付けるために使用することができます。たとえば、

compdef _pids foo

しかし、(_gitのgitののための通常の補完関数である)(_gitが自動的にロードされた後でさえも)私のために働いた結果を生じなかったことを適応ます:

compdef _git g

私はかかわら_dispatchを経由して仕事にそれを得ることができました

compdef '_dispatch git git' g
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top