我只是按照说明操作@这个问题以便在终端中实现 git 自动完成。以下是我采取的步骤:
port install bash-completion
添加
if [ -f /opt/local/etc/bash_completion ]; then . /opt/local/etc/bash_completion echo "bash completion loaded" fi
到我的 ~/.profile
port update git-core +svn +bash_completion +doc
然后我重启了终端,它显示“bash 补全已加载”,显然文件存在,但 tab 补全仍然只对文件有效。输入完后git
按下 tab 键,没有发生任何神奇的事情。
我检查了一下,它给了我 149 个文件,/opt/local/etc/bash_completion.d/
包括
git
,,,。我尝试输入这些命令,然后按 Tab 键,但没有任何效果。java
man
port
有人知道我做错了什么吗?也许我弄乱了环境变量或其他东西。有谁安装了 bash-completion 可以告诉我一个命令应该在哪里工作,比如port up
然后点击 tab --> port upgrade
。谢谢 ;-)
编辑:
找到另一个描述我的方法的链接:如何让 git-completion.bash 在 Mac OS X 上运行?
答案1
对我来说tmux
,它可以工作,但在普通的 iTerm2 中不行。解决方案是将命令设置/opt/local/bin/bash -l
为我使用的 iTerm2 配置文件。我找到了解决方案https://trac.macports.org/wiki/howto/bash-completion
答案2
答案3
我认为最简单的方法是切换到 zsh。需要进行一些配置,但仅此而已。
我将其添加到我的 ~/.zshenv 文件中
#******************************************************************************************
# From http://zshwiki.org/home/examples/compquickstart
zmodload zsh/complist
autoload -U compinit && compinit
_force_rehash() {
(( CURRENT == 1 )) && rehash
return 1 # Because we didn't really complete anything
}
zstyle ':completion:::::' completer _force_rehash _complete _approximate
zstyle -e ':completion:*:approximate:*' max-errors 'reply=( $(( ($#PREFIX + $#SUFFIX) / 3 )) )'
zstyle ':completion:*:descriptions' format "- %d -"
zstyle ':completion:*:corrections' format "- %d - (errors %e})"
zstyle ':completion:*:default' list-prompt '%S%M matches%s'
zstyle ':completion:*' group-name ''
zstyle ':completion:*:manuals' separate-sections true
zstyle ':completion:*:manuals.(^1*)' insert-sections true
zstyle ':completion:*' menu select
zstyle ':completion:*' verbose yes
答案4
我设法通过 Fink 启动并运行 Bash。
fink install bash-completion
获得 Fink 后,Bash 的 tab 补全功能便可用。这包括 Git 命令,正如您上面描述的。