小编Lim*_*mon的帖子

Bash 完成自己的 compgen 前缀

我有一个简单的 bash 完成脚本,它基本上调用我的(非 bash)程序并将其输出设置为COMREPLY,即

COMPREPLY=( $(my-program -- "${COMP_WORDS[@]}") )
Run Code Online (Sandbox Code Playgroud)

一些选项接受逗号分隔值,有没有办法只处理最后一项的建议?假设用户键入-v opt1,opt2,o<TAB><TAB>,假设我的程序此时发现有效选项是opt3or opt4。如果我只返回那些 2 并按 TAB,输出将更改为o(整个前缀消失)。如果我返回opt1,opt2,opt3and opt1,opt2,opt4,它会起作用,但这看起来不太好。

可行的办法是做类似的东西猛砸完成了逗号分隔值,也就是调用my-program生成[opt3, opt4],并传递作为单词表compgenopt1,opt2,作为前缀。但这需要在 bash 脚本中复制一些逻辑,如my-program. 有没有更好的办法?

bash autocomplete compgen

5
推荐指数
0
解决办法
100
查看次数

标签 统计

autocomplete ×1

bash ×1

compgen ×1