小编zsq*_*are的帖子

自定义命令的动态 zsh 自动完成

我正在尝试为我编写的一些自定义函数编写完成函数,但即使是最基本的函数似乎也很挣扎。

一个示例函数是:

function eb_instances() {
    if [ "$#" -ne 2 ]; then
        echo "Usage eb_instances <aws profile name> <environment name>"
        echo "e.g.:"
        echo " eb_instances production kraken-prod-api"
        return 1
    fi

    aws ec2 describe-instances --filters  "Name=instance-state-name,Values=running"   "Name=tag:Name,Values=$2" --profile=$1 --output=json | jq -r ".Reservations[].Instances[].PrivateIpAddress"
}
Run Code Online (Sandbox Code Playgroud)

这有两个位置参数,<aws profile name><environment name>

我希望 的完成选项<aws profile name>通过运行动态可用 sed -n -E 's/\[([a-zA-Z0-9_\-]+)\]/\1/p' ~/.aws/credentials | tr \\n ' ',并<environment name>通过运行我调用的另一个函数动态可用的完成选项eb_names

我发现文档非常稀疏且难以理解。我也看到了类似命令的 zsh-completions 存储库,但似乎找不到与我需要的类似的东西。

任何帮助入门将不胜感激!

更新

根据@cuonglm 的回答 …

zsh autocomplete

28
推荐指数
1
解决办法
2万
查看次数

标签 统计

autocomplete ×1

zsh ×1