2009-10-29 72 views
12

我与zsh的tab完成了一个问题:运行后:如何使用zsh compinit启用git文件选项卡完成?

autoload -U compinit 
compinit 

的文件的Git标签完成不工作了。例如,如果我键入git添加my_f来完成my_file,则不会发生任何事情。 zsh git完成似乎只适用于git分支和标记。

没有compinit的东西,git文件完成工作,但当然我错过了所有花式分支完成的东西。

所以...有没有办法让git文件完成和git分支完成可能同时在zsh中?这真的会帮助我很多。

+2

在我的.zshrc中,我有'autoload -U compinit',然后'compinit'在一个单独的行上,完成对我来说工作正常。你正在运行一个命令,还是格式化让我困惑? – bobDevil 2009-10-30 20:13:22

+1

完成'git add'后的文件也适用于我('zsh' 4.3.10-dev-1)。一件令人惊讶的事情是它只在完成'git add'时提供未跟踪和追踪修改的文件(这是可以的,因为这些是你需要添加的唯一东西)。对于'git diff',它提供了所有的跟踪文件和所有分支。 – 2009-10-31 14:11:11

+0

@Chris Johnsen:你说得对,它可以处理符合当前git命令的文件,就像git add中的未跟踪文件一样。我试图完成而没有注意到这一点。非常感谢你! – 2009-11-02 15:29:12

回答

10

(我在这里增加一个答案主要是为了得到它的解答列表。)

正如您从注释中看到,它的工作。我相信整个zsh的局势近来显著改善,太:

提交06f44c3cc5ca5eca638f300a518c65aa98d26d6d

日期:星期一9月6日8点33分19秒2010 -0400

完成:让与zsh的

兼容

修改git-completion.bash,使其在使用bashcompinit时也可以与zsh一起使用。 ...

所以,如果你恰巧碰到这个google搜索,你的完成不能正常工作,尝试升级git-completion.bash(链接指向从git.git HEAD团块)。目前的git版本是1.7.3.2;它应该成为下一个。

+6

尽管最近有一些工作通过* zsh *下的'bashcompinit'使git.git的'contrib/git-completion.bash'可用,一个典型的* zsh *安装更可能使用* git *完成附带* zsh *:[Completion/Unix/Command/_git](http://zsh.git.sourceforge.net/git/gitweb.cgi?p=zsh/zsh;a=blob;f=Completion/Unix/命令/ _git; HB = HEAD)。 – 2010-11-05 02:20:45

+0

我不知道什么时候改变了,但我只是检查了一下,我的完成对Zsh中Git的工作非常好。 (我已经习惯了这种失败,我认为我没有尝试过使用它多年。)我使用Git 1.8.3.4,因为它的价值 – iconoclast 2014-02-20 16:10:37