假设我在
这使得
怎么办?我尝试过使用
(_git_log是什么?他们是不是指的_git_log这个函数?这是一种约定吗?)
PATH
中有一个名为git-cc
的可执行文件。如果git-cc
支持--help
,那么只需使用以下命令即可提供足够的自动完成功能:complete -F _longopt git-cc
这使得
$ git-cc --<TAB>
可以自动补全(根据帮助输出)。但是git cc --<TAB>
无法自动补全(尽管它可以正常运行)。更重要的是,如果我创建一个git别名到自定义子命令,例如cc-sensible-defaults = cc --opt1 ...
,这也不起作用,在这种情况下,简单地删除空格(git-cc
而不是git cc
)不是一种选项。怎么办?我尝试过使用
__git_complete [git-]cc _longopt
进行调整,但各种组合都没有产生良好的效果。它似乎只能用于完成bash别名(如gl = git-log
),而不能用于子命令。在git/git-completion.bash中的介绍并没有很有帮助,其中包含令人困惑的内容。# If you have a command that is not part of git, but you would still
# like completion, you can use __git_complete:
#
# __git_complete gl git_log
#
# Or if it's a main command (i.e. git or gitk):
#
# __git_complete gk gitk
(_git_log是什么?他们是不是指的_git_log这个函数?这是一种约定吗?)
_git_cc() { _longopt git-cc "${@:2}"; }
这段代码来开始实现。 - KamilCuk_git_jump() { COMPREPLY=(diff merge grep); }
和git jump d<tab>
,但输出只是列出:diff grep merge
。 - Moberg