我无法让git完成在zsh shell中安装我刚安装的OS X Yosemite。我已经使用自制软件安装了git和zsh:
brew install zsh git
当通过自制程序安装git时,它应该为你设置tab-completion,但是当我git <tab>
时,它只是尝试tab-complete目录,而不是git-commands。即它没有给出任何错误 - 它只是没有工作 - 就像它没有设置一样。
显然,zsh会通过查找_*
中某个目录中的$fpath
文件来寻找自动填充的方法。这是我的:
% echo $fpath
/usr/local/share/zsh/site-functions /usr/local/Cellar/zsh/5.0.6/share/zsh/functions
看看我们看到的第一条路径:
% ls -l /usr/local/share/zsh/site-functions
lrwxr-xr-x 1 watson admin 55 Oct 20 12:08 _git -> ../../../Cellar/git/2.1.2/share/zsh/site-functions/_git
lrwxr-xr-x 1 watson admin 70 Oct 20 12:08 git-completion.bash -> ../../../Cellar/git/2.1.2/share/zsh/site-functions/git-completion.bash
所以似乎设置开箱即用 - 但它没有。
source git-completion.bash
这种作品(即它启用了自动完成),但它会打印一个警告:
WARNING: this script is deprecated, please see git-completion.zsh
因此,由于上述警告,我显然也尝试下载git-completion.zsh并按照文件顶部的指南进行操作,但它基本上会告诉您首先获取.bash文件,这仍然是原因给出错误。
我通过搜索此处和谷歌搜索了我能找到的所有内容,但似乎没有什么对我有用。
答案 0 :(得分:43)
我只是偶然发现了答案!
就我而言,我在.zshrc
文件中遗漏了一些重要内容。但首先是一点背景:
我要做的是设置&#34; zsh Completion System&#34;。它附带了许多命令,所有命令都以comp*
命名。我尝试运行这几次,但在很多情况下,zsh会告诉我它并不知道它们。所以,除了其他事情,你必须autoload
他们。
这就是我所做的:
我在.zshrc
文件中添加了以下行:
autoload -U compinit && compinit
zmodload -i zsh/complist
然后我打开了一个新终端并运行:
rm -f ~/.zcompdump; compinit
然后我打开了一个新终端,现在git <tab>
按预期工作了:)
如果您要在$fpath
文件中设置自定义.zshrc
,我建议您在之后添加这些行,以便修改$fpath
(虽然我不知道它是否有所作为。)
答案 1 :(得分:9)
从macOS Catalina开始,...
苹果已经从bash切换到zsh作为其默认外壳。
现在,您唯一需要激活zsh-completion(包括git完成)的brew命令是...
brew install zsh-completion
然后将此块添加到您的〜/ .zshrc文件(您可能必须首先创建):
if type brew &>/dev/null; then
FPATH=$(brew --prefix)/share/zsh-completions:$FPATH
autoload -Uz compinit
compinit
fi
有关更多详细信息,请参见我对AskDifferent的回答:
https://apple.stackexchange.com/a/392382/77452
答案 2 :(得分:0)
我的问题要简单得多;我忘了更改默认外壳。
echo $SHELL
,如果它是/bin/bash
,则只需键入chsh -s /bin/zsh
答案 3 :(得分:0)
我删除了主目录中的.zcompdump-(...)
文件,并且插件再次开始工作。