関数で指定された正確な順序で完成候補を入力したいと思います。私が理解したのは、-o nosort
これがうまくいくはずですが、期待どおりに機能しません。とても基本的なものが抜けたようです。それは何ですか?
autoload -Uz compinit && compinit -u
compdef _foo foo
_foo() {
compadd -o nosort -- ccc aaa bbb
}
% foo <Tab>
aaa bbb ccc
# Want: ccc aaa bbb
答え1
これがなぜ必要なのかわかりませんが、追加チーム名via-J the-group-name
または-V the-group-name
(略語-J the-group-name -o nosort
)が有効です。だから:
compadd -V 'foo operands' -- ccc aaa bbb
私は、完成システムの詳細な動作を理解するために実際に努力したことはありません。いくつかのカスタムコンフィギュレータを定義しようとすると、通常はzshが提供するコンプリートを例にします。grep -rw -- nosort $fpath
これを使用する一部の完成者は次のとおりです。これにより、functions -t one-of-those-completers
完成者を追跡し、その完成者に対してcompaddが呼び出される方法を示します。