我试图查看git-completion.bash
的代码。如果运行此文件,则可以自动完成git命令参数。我想写一个非常相似的工具,但是对于另一个命令(即:不是git)。我试图弄清楚它是如何工作的,所以我可以复制/修改它。我有一个很好的理解:
键入_git_rebase
时会调用git rebase <something><TAB>
等函数。我无法弄清楚的是如何调用_git_rebase
?我无法在代码中的任何位置找到该函数。我认为可能有事要做with this function,但我不确定。
任何更熟悉bash的人都可以向我解释这里发生了什么以及如何调用_git_rebase
?为方便起见,这里是源代码:https://github.com/git/git/blob/master/contrib/completion/git-completion.bash
答案 0 :(得分: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