【问题标题】:Custom zsh completion: custom sort?自定义 zsh 完成:自定义排序?
【发布时间】:2018-01-28 09:05:39
【问题描述】:

我正在使用_values 将完成添加到自定义 zsh 命令,但不幸的是,zsh 忽略了我传递值的顺序并按照我的相反顺序进行排序(我想要sort -rn,基本上) .

是否有强制它尊重我通过的顺序,或者如果没有,以某种方式修改用于该特定命令的排序机制(即,我不想改变所有完成的顺序,只是这个特定的。

例子:

_values 'my completions' foo bar

foo 之前显示bar,但我希望在bar 之前显示foo

【问题讨论】:

  • 你指的是全局扩展吗?
  • 不是,我指的是制表符补全。传递给 _values 函数的列表是在没有 glob 的情况下创建的。

标签: zsh zsh-completion


【解决方案1】:

通常,Zsh 完成匹配可以添加到已排序或未排序的组中。但是,_values 不包含指定此选项的选项。所以你可以这样做:

_wanted -V values expl 'my completions' compadd foo bar

您想要_values 的哪些功能?如果你想要一个没有重复的分隔列表,_sequence 可以包装上面的内容。如果您想要每场比赛的描述,_describe 可以提供帮助。但是,如果您想要 _values 的一些更复杂的功能,您要么被困在排序中,要么必须手动执行更多操作。

【讨论】:

  • 我尝试过使用_describe,但是当我添加-V 选项时,它似乎不起作用。我的代码是here。当我尝试完成hello 时,它没有排序,但匹配组的描述更改为-V。如果我将“stuff”字符串替换为“my desc”,它只会完成数组中的第一个条目,并将描述作为完成的一部分,即hello foo:foo\ desc,这很奇怪.
  • 您的代码在 zsh 5.4.2(以及 5.2)中适用于我,但不适用于 5.0.2。也许尝试更新的 zsh 版本?
  • 不幸的是,我的工作站仅限于 5.0.5 :( 感谢您验证根本原因!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-26
  • 1970-01-01
  • 2022-06-16
相关资源
最近更新 更多