Git别名参数自动补全在Zsh中不起作用。

4
我在使用别名时,遇到了一些特定的git命令(涉及远程和分支),Zsh自动补全出现了问题。以下是一个使用push命令的示例:
$ git push o<TAB>rigin m<TAB>aster  # tab completion works
$ git config --global alias.ps push # set a `ps` alias for `push`
$ git ps o<TAB>rigin m<TAB>         # tab completion doesn't work for "master"

同样的问题也会出现在pullfetch中。
我的.zshrc可以在这里找到,但我认为这与问题无关,因为我能够在没有使用它的情况下重现该问题(只需使用autoload -U compinit && compinit启用自动完成)。
我正在运行OSX 10.9,并安装了以下软件版本(两者都通过brew安装):
$ zsh --version
zsh 5.0.2 (x86_64-apple-darwin13.0.0)
$ git --version
git version 1.8.4.2

自从我进行了OSX 10.9的清洗安装,这个问题就出现了。因此,我认为它来自最近由Zsh或Git更新引起的问题。

2个回答

2

这个问题源于Bash和Zsh的Git自动补全存在漏洞。 @felipec花费了时间进行修复。非常感谢,现在它像魔术一样好用!


嗯,我仍然有这个问题 - 这是使用git的git-completion.zsh而不是Zsh修复的吗?还是在Zsh的更新中修复了? - Achal Dave
1
我安装了@felipec的完成文件:https://github.com/felipec/git/blob/fc/master/contrib/completion/git-completion.bash和https://github.com/felipec/git/blob/fc/master/contrib/completion/git-completion.zsh,它运行良好。 - aymericbeaumet
啊,太棒了,谢谢!我正在使用git的自动补全文件,我认为它们比zsh的自动补全更接近felipec的自动补全。我错过的唯一一件事是Zsh的自动补全提供别名的描述。例如,如果我有lg='log --graph'作为别名,那么当我输入git l<tab>时,会显示lg以及它的别名。哎,这可能更有价值。 - Achal Dave
仍然存在这个问题。上面的链接已经失效。 - chinaanihchen
1
自从上游合并以来,您可以尝试这些链接:https://github.com/git/git/blob/master/contrib/completion/git-completion.bash 和 https://github.com/git/git/blob/master/contrib/completion/git-completion.zsh。此外,我猜您在更新安装时不应该遇到此问题? 您使用的是哪个操作系统/ git 版本? - aymericbeaumet

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接