1

我正在尝试查看git-completion.bash. 如果你运行这个文件,你可以自动完成 git 命令参数。我想写一个非常相似的工具,但是用于另一个命令(即:不是 git)。我试图弄清楚这是如何工作的,以便我可以复制/修改它。我有一个体面的理解:

_git_rebase当您键入时,会调用类似的函数git rebase <something><TAB>。我无法弄清楚的是如何_git_rebase被调用? 我在代码中的任何地方都找不到该函数。我认为这可能与此功能有关,但我不确定。

任何更熟悉 bash 的人都可以向我解释这里发生了什么以及例如如何_git_rebase被调用吗?为方便起见,这里是源代码:https ://github.com/git/git/blob/master/contrib/completion/git-completion.bash

4

1 回答 1

2

这些函数会bash根据当前在命令行中输入的命令自动调用。

您可以查看bash的文档:

简单示例:

$ cat compspec.foo
function _foo
{
    local cmd=$1 cur=$2 pre=$3

    if [[ $pre == "$cmd" ]]; then
        COMPREPLY=( $(compgen -W 'hello world' -- "$cur") )
    fi
}

complete -F _foo foo
$ source compspec.foo
$ foo <TAB><TAB>
hello  world
$ foo h<TAB>
$ foo hello
于 2015-04-29T08:55:26.840 回答