我无法让git完成在zsh shell中新安装的OS X Yosemite上工作.我已经使用自制软件安装了git和zsh:
brew install zsh git
Run Code Online (Sandbox Code Playgroud)
当通过自制软件安装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
Run Code Online (Sandbox Code Playgroud)
看看我们看到的第一条路径:
% 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
Run Code Online (Sandbox Code Playgroud)
所以似乎设置开箱即用 - 但事实并非如此.
source git-completion.bash这种工作(即它启用自动完成),但它会打印一个警告:
WARNING: this script is deprecated, please see git-completion.zsh
Run Code Online (Sandbox Code Playgroud)
因此,由于上述警告,我显然也尝试下载git-completion.zsh并按照文件顶部的指南进行操作,但它基本上会告诉您首先获取.bash文件,这是导致错误的原因.
我在这里和谷歌上搜索了我能找到的所有东西,但似乎没有什么对我有用.
Tho*_*son 52
我只是偶然发现了答案!
在我的情况下,我在.zshrc文件中遗漏了一些重要的部分.但首先是一点背景:
我要做的是设置" zsh完成系统 ".它附带了很多命令,所有命令都有comp*.我尝试运行这几次,但在很多情况下,zsh会告诉我它不知道它们.除此之外,你还有autoload其他的东西.
这就是我做的:
我在.zshrc文件中添加了以下行:
autoload -U compinit && compinit
zmodload -i zsh/complist
Run Code Online (Sandbox Code Playgroud)
然后我打开了一个新终端并运行:
rm -f ~/.zcompdump; compinit
Run Code Online (Sandbox Code Playgroud)
然后我开了一个新的终端,现在git <tab>正如预期的那样工作:)
如果您$fpath在.zshrc文件中设置自定义,我建议您在修改后添加这些行$fpath(虽然我不知道它是否有所作为).
Jps*_*psy 19
自 macOS Catalina 以来,...
Apple 已从 bash 切换到 zsh 作为其默认 shell。
现在,您需要激活 zsh-completion(包括 git 完成)的唯一 brew 命令是这个...
brew install zsh-completion
Run Code Online (Sandbox Code Playgroud)
然后将此块添加到您的 ~/.zshrc 文件(您可能必须先创建):
if type brew &>/dev/null; then
FPATH=$(brew --prefix)/share/zsh-completions:$FPATH
autoload -Uz compinit
compinit
fi
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅我在 AskDifferent 上的回答:https ://apple.stackexchange.com/a/392382/77452
| 归档时间: |
|
| 查看次数: |
8396 次 |
| 最近记录: |