我希望根据使用上下文让“tab”具有 2 种不同的行为。
我希望bind '"\t":complete'
除了用户尝试完成“mybashfunction”命令的参数之外,任何时候都具有默认行为。在这种情况下,我调用一个特殊函数来生成完成,但我希望“tab”像bind '"\t":menu-complete'
设置时一样工作。
答案1
我相信它的 readline 库每次只支持一种制表符补全行为。
答案2
这就是你要找的东西吗?Bash:菜单仅适用于少数匹配项
答案3
您可以使用 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 的正常完成,但是当您使用 tab 键完成 myfunc 时,您将获得“零一二”作为可能的完成。
编辑:哦是的,将它塞进你的 bashrc 或类似文件中,以便它在新的 shell 中获取。