我有一个Git别名update
,我想给它添加分支名补全。别名的定义如下:
[alias]
update = "!f() { git push . origin/$1:$1; }; f"
(It用它的上游版本更新本地跟踪分支,而不必 checkout 分支。尽管对特定的问题并不真正重要。)
我想让这个命令用Tab键完成已有的分支名称,我知道我可以定义一个名为_git-update
的函数来控制完成,但是我缺少一些东西来让它工作:
_git-update ()
{
***some-function-here*** "$(__git_branch_names)"
}
我正在使用brew install zsh-completions
安装在OSX上的完成,这是https://github.com/zsh-users/zsh-completions的设置。
(This问题直接类似于https://stackoverflow.com/a/41307951/169947,但针对的是Zsh而不是Bash。)
3条答案
按热度按时间c7rzv4ha1#
可能有点先发制人,但这是工作:
参考:contrib/completion/git-completion.bash
可能的改进:
~/.zshrc
中使用全局shell函数?bmvo0sr52#
如果你想要和另一个已有的git子命令(补全系统知道的)一样的补全,最简单的方法是:
null命令(
:
)后跟git子命令(例如git branch
),告诉git补全系统使用子命令中的补全来补全您的别名。这个功能内置在git别名系统中,使用它意味着你不必担心shell的差异。
0lvr5msh3#
我使用这个函数将工作分支附加到PS1: