【问题标题】:Defining ZSH completion function (compdef) for multiple commands为多个命令定义 ZSH 完成函数 (compdef)
【发布时间】:2017-05-17 04:42:11
【问题描述】:

我有一个名为

的 ZSH 补全脚本
#compdef kubens
_arguments "1: :(- $(kubectl get namespaces -o=jsonpath='{range .items[*].metadata.name}{@}{"\n"}{end}'))"

这提供了kubens 命令的补全。但是,如果用户提供了某个安装参数,则程序与 kns 名称链接,因此我尝试使用相同的 #compdef 为这两个命令提供完成。

我如何做到这一点?

【问题讨论】:

    标签: zsh zsh-completion


    【解决方案1】:

    我们可以为#compdef 行使用cmd=service 表单:

    #compdef kubens kns=kubens
    

    虽然我们可以为#compdef 行使用多个名称,但当cmd 的行为方式与service 相同时,可以使用cmd=service 表单:

    #compdef name ... [ -{p|P} pattern ... [ -N name ... ] ]

    文件将自动加载,并在完成 names 时调用其中定义的函数,其中每个名称都是要完成其参数的命令的名称...
    ...
    每个 name 的格式也可以是“cmd=service”。在完成命令 cmd 时,该函数通常表现得好像命令(或特殊上下文)service 正在完成。

    -- zshcompsys(1): Completion System, INITIALIZATION, Autoloaded files, #compdef

    【讨论】:

    • 谢谢,这些信息似乎被隐藏在手册中,没有谷歌搜索结果显示。我希望这个问题对其他人有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多