zsh:コマンド Y を入力するときにコマンド X の補完を使用する
-
26-09-2019 - |
質問
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
所属していません StackOverflow