zsh _arguments 补全逐渐显示选项

zsh _arguments 补全逐渐显示选项

我现在有一个完成函数,看起来像这样(除了更多的条目)

_arguments \
  '-check[do a check]' \
  '-play[play a specific song]:songnumber' \
  '-test.n=[run test specified number of times]:n' \
  '-test.dir=[run test in a specific working dir]:dir: _path_files -/' \
  '-test.v[run tests verbose]' \
  '-log[delete all log files]' \
  '*:inputfiles: _files'

按下标签后,这会导致打印输出如下:

pseyfert@robusta:~ > program -⇥
option:
-check     -- do a check
-log       -- delete all log files
-play      -- play a specific song
-test.dir  -- run test in a specific working dir
-test.n    -- run test specified number of times
-test.v    -- run tests verbose

一种模式是,相当多的选项以 开头-test.,而我通常对它们不感兴趣,因此,当寻找我不记得的选项时,整个块都-test.有点垃圾邮件。我更喜欢将选项分组到打印输出中,如下所示:

pseyfert@robusta:~ > program -⇥
option:
-check     -- do a check
-log       -- delete all log files
-play      -- play a specific song
-test.     -- test options

然后当到达时-test.揭示后面的内容:

pseyfert@robusta:~ > program -test.⇥
option:
-test.dir  -- run test in a specific working dir
-test.n    -- run test specified number of times
-test.v    -- run tests verbose

我意识到我可以在选项后用减号找到正确的方向

_arguments \
  '-check[do a check]' \
  '-play[play a specific song]:songnumber' \
  '-log[delete all log files]' \
  '-test.-[test options]:testopts: _testopts' \
  '*:inputfiles: _files'

这样就不会在后面添加空格-test.,并且空格不会被解释为“选项继续”。我所缺乏的是函数_testopts。我很想再次使用_arguments,但这需要-在后面加上引号-test._values我不知道如何放置描述,也不知道如何继续使用上述其他函数_path_files -/

是否有任何逐步选项揭示或提示如何最好地改变我的完成设计的例子?

相关内容