use*_*369 139 git macos zsh autocomplete
当我使用OSX的git时,我可以简单地修改一个文件git commit <tab>,然后自动完成文件的名称到被修改的文件.但是,如果我从自制软件安装更新版本的git并且我使用它,那么这个功能就不再适用了(这意味着我按下<tab>它只是"询问"我想要做什么文件,甚至包括那些没有变化的文件).
任何人都可以解释为什么,以及如何解决这个问题?我更喜欢使用自制软件的git,因为它更新了.
我的shell是zsh,无论是安装bash-completion还是zsh-completions工作(甚至在遵循自制软件的安装后说明之后).
此外,在用自制软件安装git后,它说
Bash completion has been installed to: /usr/local/etc/bash_completion.d
zsh completion has been installed to: /usr/local/share/zsh/site-functions
Run Code Online (Sandbox Code Playgroud)
所以我不应该使用其中之一吗?
Gra*_*rks 274
您正在寻找:
brew install git bash-completion
Run Code Online (Sandbox Code Playgroud)
正如warpc的评论所述,您需要将以下内容添加到您的主页~/.bash_profile以完成自制软件的bash-completion工作:
if [ -f $(brew --prefix)/etc/bash_completion ]; then
. $(brew --prefix)/etc/bash_completion
fi
Run Code Online (Sandbox Code Playgroud)
安装bash-completion公式时,需要注意上述内容.
注意:如果您正在使用Bash v4或更高版本(通过brew install bash),那么您将要使用brew install bash-completion@2,以启用选项卡完成添加以下内容,~/.bash_profile如警告中所述:
export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d"
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"
Run Code Online (Sandbox Code Playgroud)
git,docker,youtube-dl和其他可能包含在$(brew --prefix)/etc/bash_completion.d/目录中的完成需要额外的导出.
use*_*638 98
这个得到的git tab完成在OSX上工作而不必重新启动你的终端:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash && echo "source ~/.git-completion.bash" >> ~/.bash_profile && source ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)
Ane*_*pic 19
出于某种原因,我错过了文件,$(brew --prefix)/etc/bash_completion所以@Graham Perks的正确答案对我不起作用
它最终解决了我的情况:
brew unlink bash-completion
brew link bash-completion
Run Code Online (Sandbox Code Playgroud)
Asb*_*erg 10
我通过弄清楚执行时$(brew --prefix)/etc/bash_completion返回的问题解决了这个问题Permission denied.所以简单之后:
chmod +x $(brew --prefix)/etc/bash_completion
Run Code Online (Sandbox Code Playgroud)
现在一切都很好.我想知道为什么Homebrew bash_completion在安装时不会使文件可执行.
对于 macOS Catalina 上的 bash(3/30 更新: Big Sur 也是如此),如果您还想使用自制程序中的 Bash 5,则需要确保您的登录 shell设置为自制程序的 bash,而不是默认值。
要检查您是否需要执行此操作,请运行echo ${BASH_VERSION}. 如果您看到以 3 开头的版本,则表明您没有使用 Brew 的 bash 作为登录 shell。
为了改变这一点,
System Preferences-> Users and Groups.login shell为您的brew bash 的位置,通常可以在安装brew 的bash 后which bash通过在终端中运行来找到该位置。我的是。/usr/local/bin/bash重新启动您的终端,然后按照这个优秀答案中的说明进行操作
小智 5
我有同样的问题,甚至今天早上发现这篇文章.我通过更新brew修复了问题brew update,然后重新安装git brew reinstall git.
然后我被告知另一个阻止自制链接进程的文件,就我的情况而言/usr/local/share/zsh/site-functions/git-completion.bash.删除文件并运行brew link git解决了问题.猜测这只是一个糟糕的食谱版本我们偶然发现.
找到了一个可行的解决方案。它是最近的(16 小时前编写,2 小时前提交),并且直接来自 homebrew。
brew install git --without-completions
刚刚尝试了一下,终于按预期工作了。