zsh:如何使用特定顺序填充完成候选者

zsh:如何使用特定顺序填充完成候选者

我想用函数中指定的确切顺序填充完成候选。据我了解,-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。

相关内容