如何将字符串补全输出到标准输出?

如何将字符串补全输出到标准输出?

有些git命令有很多选项,在它们中搜索我需要的选项通常很有用 - 我只是在寻找控制TAB中宽度的选项git-gui,但 . 大约有 200 个补全git config。一个明显的解决方法是将所有完成复制到编辑器中并搜索它们,但我宁愿这样做

[something] | grep tab

没有maninfo的页面compgenhelp compgen甚至没有解释它自己的选项,并且没有自动完成compgen(这是讽刺吗?)。

附:compgen -A不起作用。

PPS:这不是一个关于git-gui- 的问题制表符宽度问题的解决方案在别处。

购买力平价:这是不是仅关于自动完成命令命令参数

答案1

sudo您可以使用以下函数,它使用与自动完成相同的方式生成完成列表:

comp() {
    local COMP_LINE="$*"
    local COMP_WORDS=("$@")
    local COMP_CWORD=${#COMP_WORDS[@]}
    ((COMP_CWORD--))
    local COMP_POINT=${#COMP_LINE}
    local COMP_WORDBREAKS='"'"'><=;|&(:"
    # Don't really thing any real autocompletion script will rely on
    # the following 2 vars, but on principle they could ~~~  LOL.
    local COMP_TYPE=9
    local COMP_KEY=9
    _command_offset 0
    echo ${COMPREPLY[@]}
}
comp git config ''

其中_command_offset在 bash-completion (包)中定义。

注意:该函数需要在交互式 shell 中运行(即,如果它在文件中,则需要获取该文件而不仅仅是运行。),否则将不会定义必要的完成规则/函数。

附言。compgen -A仅适用于内置操作,您应该尝试的(但也不起作用)是compgen -F(或实际上compgen -o bashdefault -o default -o nospace -F _git)。这不起作用的原因(以及 bash 内置命令的文档,包括 compgen/complete)可以在以下位置找到重击(1)

相关内容