Git标签完成在mac上的zsh中不起作用

goucqfw6  于 2023-02-11  发布在  Git
关注(0)|答案(7)|浏览(150)

无论我怎么尝试,我似乎都无法让git tab/auto completion在我的zsh shell中工作,我已经下载了bash-completion脚本和zsh-completion脚本,并按照说明操作,但我无法让它工作。
我已经重新安装了oh-my-zsh,但似乎没有帮助或有任何不同。
任何人谁得到了它的工作向我描述他们的设置,所以我可以尝试模仿它,让它为我工作?
具体来说,到目前为止我所做的是:

没找到。

js81xvg6

js81xvg61#

TL;DR单行

echo 'autoload -Uz compinit && compinit' >> ~/.zshrc && . ~/.zshrc

这将启用.zshrc中的完成并将设置应用到当前的终端会话。

解释:

实际上,ZSH*****知道如何进行git补全,但是你需要打开补全功能(从你描述的步骤来看,我猜你还没有做)
将此添加到您的.zshrc中就足够了:

autoload -Uz compinit && compinit

在您将.zshrc行放入文件后,不要忘记重新启动shell,以便ZSH获取新的配置(或者,您可以在当前会话中执行该行,这将为该会话启用自动完成功能)

zsh compinit: insecure directories警告

感谢@FranMorzoa建议使用compinit -uskip the security checks for completion scripts
虽然这将摆脱警告/确认,但警告是有原因的,它不应该正常发生。
这表明完成脚本的所有权出了问题,可以(并且应该)使用以下方法之一进行修复:

chmod -R go-w "$(brew --prefix)/share"

  • 另一个可能适用于非brew的zsh,来源于GitHub上的pvinis:

compaudit | xargs chmod g-w

更多信息

yxyvkwin

yxyvkwin2#

对于2019年查看器:

如果您使用ZSH:
brew install hub
mkdir ~/.zshmkdir ~/.zsh/completions
创建目录并安装集线器后,必须将cp文件hub.bash_completion.sh到本地zsh/completion文件夹。
(Mine为cp /usr/local/etc/bash_completion.d/hub.bash_completion.sh ~/.zsh/completions/_hub
然后将以下行添加到~/.zshrc文件中:

fpath=(~/.zsh/completions $fpath) 
autoload -U compinit && compinit

然后source ~/.zshrcvoilà!你应该可以使用git完成
资料来源https://github.com/github/hub/tree/master/etc#zsh

14ifxucb

14ifxucb3#

答案是我的.zshrc文件中有alias git=hub,参见https://github.com/github/hub了解hub的信息(这太棒了)。
这里有一个关于hub和git补全问题的链接:https://github.com/github/hub/issues/586#issuecomment-47727226

vtwuwzda

vtwuwzda4#

我发现问题在于,当通过homebrew安装git时,git会安装自己的zsh shell扩展,这比oh-my-szh安装的默认扩展要不完整,找出你的git安装版本,然后删除zsh自动完成功能,我的在这里,然后删除:

rm -rf /usr/local/Cellar/git/2.28.0/share/zsh/

这并不是说这个问题不可能是其他答案中的任何一个或组合。

gab6jxml

gab6jxml5#

如果没有任何帮助,尝试删除符号链接/usr/local/share/zsh/site-functions/_git,它出现在安装git和Homebrew brew install git之后

nvbavucw

nvbavucw6#

同样的问题也困扰着我,在答案的启发下,我浏览了.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

xmq68pz9

xmq68pz97#

mkdir -p ~/.zsh/completions
curl "https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh" > ~/.zsh/completions/_git
chmod a+x ~/.zsh/completions/_git
cat ~/.zshrc | grep 'fpath=(~/.zsh/completions $fpath)' > /dev/null || echo 'fpath=(~/.zsh/completions $fpath)' >> ~/.zshrc
cat ~/.zshrc | grep 'autoload -Uz compinit && compinit' > /dev/null || echo 'autoload -Uz compinit && compinit' >> ~/.zshrc
source ~/.zshrc

或者只运行brew install zsh-completions并按照说明操作。

相关问题