参数的消息显示在哪里?

参数的消息显示在哪里?

我正在学习编写 zsh 完成脚本,在阅读文档时_arguments我发现了这部分:

n:消息:动作
n::消息:动作
    这描述了第 n 个正常参数。这信息
    打印在生成的匹配项上方行动表示[...]

哪里是信息打印?我正在尝试以下最小功能,但我无法弄清楚。我需要在 shell 中启用某些功能吗?

function _test {
  _arguments '-a' '-b[description]:my message:(x y)'
}
$ compdef _test program

这导致:

$ program -b <tab>
x y

答案1

如果您知道在哪里查看,它就在手册中,但按照其解释方式,您实际上必须知道答案才能理解手册的内容。

_arguments称其为“消息”,手册称其为“描述”。因此,您信心十足——或者阅读了源代码_arguments,然后发现这条消息被传递给_describe。该函数的文档指出

如果设置了标签的样式,则将其descr视为显示在匹配项上方的字符串。formatdescriptions

样式是您配置的东西zstyle。这“完成系统配置”部分记录完成样式的格式:

这些字段始终按顺序排列:completion:function:completer:command:argument:tag

所以你需要打电话。或者,如果您只想在某些情况下执行此操作,请将其替换为其他内容。zstyle ':completion:*:*:*:*:descriptions' format=SOMETHING*

的文档descriptions标签在这个阶段并不是特别有帮助,但是的文档format样式是:

如果为描述标签设置了此项,则其值将用作字符串以在完成列表中显示上述匹配项。该字符串中的序列%d将替换为这些匹配项的简短描述。该字符串还可以包含由以下方式理解的输出属性序列compadd -X

请参阅compadd文档又指迅速扩展;你主要可以使用视觉效果

所以跑

zstyle ':completion:*:*:*:*:descriptions' format '%F{green}%d%f'

您会在完成的上方看到绿色的消息。或者

zstyle ':completion:*:*:program:*:descriptions' format '%F{green}%d%f'

如果您只想在完成 的参数时应用它program

答案2

您需要设置format完成的 zstyle:

zstyle ':completion:*' format 'Completing %d'

然后:

$ 程序-bTab
完成我的消息
XY

info zsh format详情请参阅。

compinstall如果您按照此菜单选择进行设置:

3.  Styles for changing the way completions are displayed and inserted.
[...]
1.  Change appearance of completion lists:  allows descriptions of
    completions to appear and sorting of different types of completions.
[...]
1.  Print a message above completion lists describing what is being
    completed.
[...]
You can set a string which is displayed on a line above the list of matches
for completions.  A `%d' in this string will be replaced by a brief
description of the type of completion.  For example, if you set the
string to `Completing %d', and type ^D to show a list of files, the line
`Completing files' will appear above that list.  Enter an empty line to
turn this feature off.  If you enter something which doesn't include `%d',
then `%d' will be appended.  Quotation will be added automatically.

description>

相关内容