(関数の)2番目の引数のZshオートコンプリートルールを既存のコマンドのルールとしてどのように設定しますか?

(関数の)2番目の引数のZshオートコンプリートルールを既存のコマンドのルールとしてどのように設定しますか?

私は持っていますカスタムZsh機能g:

function g() {
  # Handle arguments [...]
}

ここでは、Gitコマンドを実行するための短い引数を処理します。たとえば、

g ls # Executes git ls-files ...
g g  # Executes git grep ...

Gitの短いパラメータルールでオートコンプリートルールを設定できるはずですが、どうすればいいかわかりません。

たとえば、次のパラメータを提供するg ls <TAB>タブを含むルールを完成させる必要があります。git ls-files <TAB>git ls-files

$ g ls --<TAB>
--abbrev                 -- set minimum SHA1 display-length
--cached                 -- show cached files in output
--deleted                -- show deleted files in output
# Etc...

カスタムショートコマンドをGitコマンドにマッピングするgため、これはオートコンプリートに設定されていません。git

ベストアンサー1

私は/usr/share/zsh/functions/Completion/Unix/_gitこのようなエイリアスに関するいくつかのヒントを見つけ、エイリアスに対して次の関数を定義しました。

_git-ls () {
  # Just return the _git-ls-files autocomplete function
  _git-ls-files
}

それから直線でcompdef g=git。たとえば、オートコンプリートシステムはユーザーが実行中であることを確認し、g lsオート_git-lsコンプリート機能を使用します。

私を正しい方向に案内してくれたuser67060に感謝します。

おすすめ記事