小编mat*_*n h的帖子

自定义脚本的 ZSH 自动完成

我已经在网上搜索了很多小时,通宵达旦,因为我在这个兔子洞中迷失了:D,但我很难找到工作代码的示例。

我有一个 bash 脚本,其调用方式如下例所示:

foo-tools.sh switch <version number>
foo-tools.sh start 
foo-tools.sh open-ports on 
foo-tools.sh kube get logs 
foo-tools.sh kube edit ing default-ingress -oyaml
Run Code Online (Sandbox Code Playgroud)

我使用 zsh 和 oh-my-zsh 作为我的 shell。

我希望能够输入“foo-tools.sh”来列出所有可用选项,并且我希望能够使用“foo-tools.sh k”自动完成选项,这意味着它应该列出以“foo”开头的所有可用选项-tools.sh k*" 或者如果只有一个选项自动完成命令。

我在一些 stackoverflow 线程上找到了这段代码,这是我让它完全工作的结束:

#compdef foo-tools.sh

_foo_tools_sh() {
    typeset -A opt_args
    local alternatives

    alternatives=(
        'args:rv options:_foo_tools_sh_options'
    )

    _alternative $alternatives && return 0

    return 1
}

_foo_tools_sh_options() {
    local -a arguments=(
        'start:Start VP'
        'stop:Stop VP]'
        'kube:Kube CMD'
        'kube logs:Kube logs'
        'info:Display info'
        'get:Get CMD'
        )

    _sequence _describe 'cmds' arguments …
Run Code Online (Sandbox Code Playgroud)

terminal zsh zsh-completion oh-my-zsh

8
推荐指数
1
解决办法
1338
查看次数

标签 统计

oh-my-zsh ×1

terminal ×1

zsh ×1

zsh-completion ×1