自动填充包含冒号的单词

时间:2013-06-11 02:02:32

标签: bash shell autocomplete

我正在为程序foo创建一个自动完成函数,该程序包含一些子命令,如:

foo lists:show
foo list:create <list_name>

到目前为止,我有一些工作:

# file: foo_completion.sh
_foo_completion_func ()
{
    local cur
    COMPREPLY=()
    cur=${COMP_WORDS[COMP_CWORD]}
    case "$cur" in
        t*) COMPREPLY=( $( compgen -W 'list:show' -- $cur ) );;
    esac
    return 0
}
complete -F _foo_completion_func -o filenames foo

所以,如果我做source foo_completion.sh 然后foo li Tab 我得到它自动完成但输出是:

foo list\:show

冒号前加\。它有效,显然它只是一个视觉效果,但我希望我得到foo list:show而不是foo list\:show。这可能吗?任何想法都受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

冒号作为文件名处理的一部分进行转义。尝试删除-o filenames。如果您仍然需要,我不确定是否有办法选择性地禁用它。