Bash完成dynamic行为

我想根据使用情况有2个不同的“标签”的行为。
除非用户试图完成“mybashfunction”命令的参数,否则我希望具有bind '"\t":complete'的默认行为bind '"\t":complete'任何时间。 在这种情况下,我调用一个特殊的函数来生成完成,但我希望“tab”工作,就像bind '"\t":menu-complete'被设置。

我相信它的readline库一次只能支持一种tab-completion行为。

这是你在找什么? Bash:菜单只适用于less数比赛

你可以通过使用bash完成规则来实现这个…

 _myfunc() { _opts="zero one two" # COMPREPLY is bash built-in for array of possible completions COMPREPLY=() # cur & prev are current & previous words typed in shell cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" COMPREPLY=( $( compgen -W "${_opts}" -- ${cur} )) return 0 } complete -F _myfunc myfunc 

这不会触及bash的正常完成,但是当你完成myfunc的标签时,你将有可能完成的“零一二”。

编辑:噢,果酱这个到你的bashrc或类似的,所以它来源于新的炮弹。