我正在尝试查看git-completion.bash
的代码。 如果运行此文件,则可以自动完成 git 命令参数。 我想写一个非常相似的工具,但用于另一个命令(即:不是 git)。 我正在尝试弄清楚这是如何工作的,以便我可以复制/修改它。 我有一个不错的理解:
当您键入 git rebase <something><TAB>
时,会调用像 _git_rebase
之类的函数。 我不知道的是_git_rebase
怎么称呼? 我在代码中的任何地方都找不到该函数。 我认为这可能与此功能有关,但我不确定。
更熟悉bash的人可以向我解释这里发生了什么以及如何称呼_git_rebase
吗? 为方便起见,以下是源代码:https://github.com/git/git/blob/master/contrib/completion/git-completion.bash
函数由bash
自动调用,具体取决于当前在命令行中输入的命令。
你可以看看bash
的文档:
- 8.6 可编程补全
- 8.7 可编程补全内置
简单的例子:
$ 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