无论我尝试做什么,我似乎无法在我的zsh shell中进行git tab / auto completion工作。我已经下载了bash-completion脚本和zsh-completion脚本,并按照说明操作,但我无法使其正常工作。
我已经重新安装了oh-my-zsh,但这似乎没有帮助或产生任何影响。
任何能够让它工作的人都可以向我描述他们的设置,以便我可以尝试模仿它以使其适合我吗?
具体来说,到目前为止我所做的是:
~/.completion/git/git-completion.sh
~/.zsh/_git
zstyle ':completion:*:*:git:*' script ~/.completion/git/git-completion.sh
没有运气。
答案 0 :(得分:22)
实际上,ZSH 确实知道如何进行git完成,但是您需要打开完成功能本身(根据您描述的步骤,我想您还没有完成)
将此添加到您的.zshrc
中就足够了:
autoload -Uz compinit && compinit
放置.zshrc
行文件后,请不要忘记重新启动Shell以使ZSH拾取新配置(或者,您可以在当前会话中执行该行,这将对那一次会议)
有关更多信息,请参见此处https://git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Zsh
PS这里的另一个答案建议改为安装hub
工具:尽管该工具很方便,但它只是git的第三方(github社区)包装。因此,它与“ ZSH中的Git完成”主题无关。
答案 1 :(得分:15)
答案是我的alias git=hub
文件中有.zshrc
。有关集线器的信息,请参阅https://github.com/github/hub(非常棒)。
以下是有关我使用hub和git完成时遇到的问题的信息的链接:https://github.com/github/hub/issues/586#issuecomment-47727226
答案 2 :(得分:1)
对我来说,问题是,当通过自制软件安装git时,git安装了自己的zsh shell扩展,它的完整性/功能远不及oh-my-szh安装的默认值。找出git安装的版本,然后删除zsh自动填充。我的在这里,因此被删除了:
rm -rf /usr/local/Cellar/git/2.28.0/share/zsh/
这并不是说问题不可能是其他答案中的任何一个,也不能是这些答案的组合。
答案 3 :(得分:1)
如果没有任何帮助,请尝试使用 Homebrew /usr/local/share/zsh/site-functions/_git
删除安装 git 后出现的符号链接 brew install git
答案 4 :(得分:0)
今天同样的问题困扰着我。受到答案的启发,我环顾了.zshrc,发现了这一点:
Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
Example format: plugins=(rails git textmate ruby lighthouse)
Add wisely, as too many plugins slow down shell startup.
plugins=(git)
只需注释以上行以启用git插件,即可解决问题。 有关该插件的更多详细信息,可以在这里找到: https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/git
答案 5 :(得分:0)
对于2019年观看者:
如果您使用ZSH:
brew install hub
mkdir ~/.zsh
和mkdir ~/.zsh/completions
一旦创建了目录并安装了集线器,您就必须cp
hub.bash_completion.sh
文件到本地zsh/completion
夹。
(我的名字是cp /usr/local/etc/bash_completion.d/hub.bash_completion.sh ~/.zsh/completions/_hub
)
然后将以下行添加到~/.zshrc
文件中:
fpath=(~/.zsh/completions $fpath)
autoload -U compinit && compinit
然后source ~/.zshrc
和瞧瞧!您应该有可用的git完成