Git完成在带有Homebrew的OS X约塞米蒂上的zsh中不工作

lnxxn5zx  于 2023-02-28  发布在  Git
关注(0)|答案(4)|浏览(101)

我无法让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文件,这是有原因的,仍然会给出错误。

搜索堆栈溢出和谷歌

我已经尝试了几乎所有我能找到的搜索这里和谷歌,但似乎没有为我工作。

46qrfjad

46qrfjad1#

我只是偶然发现了答案!
在我的例子中,我在.zshrc文件中遗漏了一些重要的部分,但首先介绍一些背景知识:
我正在尝试做的是设置"zsh Completion System"。它附带了很多命令,所有命令都以comp*命名。我尝试运行这些命令几次,但在许多情况下,zsh会告诉我它不知道它们。所以目前你必须autoload它们,以及其他一些事情。
我是这么做的:
我在.zshrc文件中添加了以下行:

autoload -U compinit && compinit
zmodload -i zsh/complist

然后我打开一个新的终端运行:

rm -f ~/.zcompdump; compinit

然后我打开了一个新的终端,现在git <tab>按预期工作:)
如果你在.zshrc文件中设置一个定制的$fpath,我建议你在修改$fpath之后添加这些行(尽管我不知道这是否会有区别)。

2q5ifsrm

2q5ifsrm2#

自macOS Catalina 以来

苹果已经从bash切换到zsh作为默认shell。
现在你需要激活zsh-completion(包括git completion)的唯一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

nlejzf6q

nlejzf6q3#

我的问题要简单得多我忘了改变我的默认 shell 。
echo $SHELL,如果是/bin/bash,则只需键入chsh -s /bin/zsh

4uqofj5v

4uqofj5v4#

我删除了主目录中的.zcompdump-(...)文件,插件又开始工作了。

相关问题