Git完成在OS X Yosemite和Homebrew上的zsh中不起作用

时间:2014-10-20 09:45:15

标签: git homebrew zsh

我无法让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

所以似乎设置开箱即用 - 但它没有。

这也是我尝试过的

GIT-completion.bash

  1. 正在下载git-completion.bash
  2. 使用source git-completion.bash
  3. 运行它

    这种作品(即它启用了自动完成),但它会打印一个警告:

    WARNING: this script is deprecated, please see git-completion.zsh
    

    GIT-completion.zsh

    因此,由于上述警告,我显然也尝试下载git-completion.zsh并按照文件顶部的指南进行操作,但它基本上会告诉您首先获取.bash文件,这仍然是原因给出错误。

    搜索StackOverflow和Google

    我通过搜索此处和谷歌搜索了我能找到的所有内容,但似乎没有什么对我有用。

4 个答案:

答案 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-(...)文件,并且插件再次开始工作。