我无法让git completion在我新安装的OS X约塞米蒂的zsh shell上工作,我用homebrew安装了git和zsh:
brew install zsh git
当通过homebrew安装git时,它应该会为你设置制表符补全,但是当我使用git <tab>
时,它只会尝试用制表符补全目录,而不是git命令。也就是说,它不会给出任何错误--它只是不工作--就像它没有设置一样。
这是我目前所知道的
显然,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
因此,它似乎是设置工作的开箱即用-但它没有。
我也尝试过
git完成.bash
1.正在下载git-completion.bash
1.使用source git-completion.bash
运行它
这一种可以工作(例如,它支持自动完成),但它会打印一个警告:
WARNING: this script is deprecated, please see git-completion.zsh
git完成.zsh
因此,由于上面的警告,我显然也尝试下载git-completion.zsh并遵循文件顶部的指南,但它基本上告诉您首先获取.bash文件,这是有原因的,仍然会给出错误。
搜索堆栈溢出和谷歌
我已经尝试了几乎所有我能找到的搜索这里和谷歌,但似乎没有为我工作。
4条答案
按热度按时间46qrfjad1#
我只是偶然发现了答案!
在我的例子中,我在
.zshrc
文件中遗漏了一些重要的部分,但首先介绍一些背景知识:我正在尝试做的是设置"zsh Completion System"。它附带了很多命令,所有命令都以
comp*
命名。我尝试运行这些命令几次,但在许多情况下,zsh会告诉我它不知道它们。所以目前你必须autoload
它们,以及其他一些事情。我是这么做的:
我在
.zshrc
文件中添加了以下行:然后我打开一个新的终端运行:
然后我打开了一个新的终端,现在
git <tab>
按预期工作:)如果你在
.zshrc
文件中设置一个定制的$fpath
,我建议你在修改$fpath
之后添加这些行(尽管我不知道这是否会有区别)。2q5ifsrm2#
自macOS Catalina 以来
苹果已经从bash切换到zsh作为默认shell。
现在你需要激活zsh-completion(包括git completion)的唯一brew命令是...
然后将这个代码块添加到你的~/.zshrc文件中(你可能需要先创建这个文件):
更多详情请参见我在AskDifferent上的回答:
https://apple.stackexchange.com/a/392382/77452
nlejzf6q3#
我的问题要简单得多我忘了改变我的默认 shell 。
echo $SHELL
,如果是/bin/bash
,则只需键入chsh -s /bin/zsh
4uqofj5v4#
我删除了主目录中的
.zcompdump-(...)
文件,插件又开始工作了。