背景
我已经成功地为各种 Git 别名配置了 Bash 补全。例如:
$ git config alias.subject
!git --no-pager show --quiet --pretty='%s'
$ function _git_subject() { _git_show; }
$ git subject my<TAB>
$ git subject my-branch
挑战
但是,我有一个 Git 别名,我不知道如何设置 Bash 补全。问题是我希望别名像顶级 Git 命令本身一样完成。别名是这样的:
$ git config alias.alias
alias = !"f() { if [[ \"$#\" != 1 ]]; then >&2 echo \"Usage: git alias COMMAND\"; return 1; fi; git config alias.\"$1\"; }; f"
# Example
$ git alias s
status
我尝试过使用_git
,__git_main
和__git_wrap__git_main
,但它们都不起作用(我认为它会导致无限循环,因为在我按下制表符后它永远不会返回)。
有没有办法为 Git 别名添加完成,就像它是顶级 Git 命令一样完成?或者特别是如何完成这个别名?
试过但不起作用
function _git_alias() { _git; }
function _git_alias() { __git_main; }
function _git_alias() { __git_wrap__git_main; }
期望的行为
$ git alias su<TAB>
subject submodule
$ git alias sub
或者,如果有一种简单的方法可以只为很酷的别名完成。不过,出于好奇,我想知道如何像顶级 Git 命令一样完成。