36

我在 Windows 上安装了 Cygwin,默认包之一是 git tab 完成,但我没有 tab 完成。

我进行了一些搜索,发现一条说明默认情况下未启用它。我复制了skel .bashrc and .bash_profile to ~ and in .bashrc我取消注释的行以完成,然后重新启动控制台。依然没有。

然后我注意到 .bash_completion 文件中不存在/etc,所以我在网上找到了一份副本并将其放置在适当的位置,但我仍然没有在 git 中完成。

似乎也应该有一个/etc/bash_completion.d目录git/,但我也没有。

4

7 回答 7

55

2016 年更新:安装包bash-completion

于 2014-11-24T11:29:45.183 回答
9

上面的答案bash: have: command not found几乎适用于 bash_completion.d/ 中的每个脚本。 链接帖子中的这个答案为我解决了这个问题:

if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi

脚本/程序 /etc/bash_completion 已经包含 /etc/bash_completion.d 中的脚本,并且还定义了包含的脚本所需的一些功能。

但是,请注意这会减慢 shell 的加载速度,尤其是在 Cygwin 中(对我来说,加载速度减慢到大约 1 秒)。为了缓解这种情况,您可以将 /etc/bash_completion.d/ 中的所有内容重命名为*.bak,然后.bak从您实际关心的命令中选择性地删除(感谢cygwin 中 bash 的缓慢加载时间)。

更新:该文件/etc/bash_completion神奇地消失了(看起来是由于将 bash-completion 包升级到 2.1-1)。作为一个快速的解决方案,我刚刚在 /etc 中创建了一个符号链接到/usr/share/bash-completion/bash_completion.

更新 2:重新阅读原始问题,没有/etc/bash_completion.d目录的问题可能与未在 Cygwin 中安装“bash-completion”包有关。

于 2014-08-07T16:48:04.357 回答
5

在我的 .bashrc

 for file in /etc/bash_completion.d/* ; do
    source "$file"
 done
于 2013-09-10T15:45:10.203 回答
4

要从 cmd.exe 运行“git-completion”包:

cyg-get git-completion

之后您无需修改​​ .bashrc。

于 2015-03-07T14:32:27.247 回答
4

几天前我偶然发现了同样的问题,安装bash-completion还不够。

在我下载https://github.com/git/git/blob/master/contrib/completion/git-completion.bash并将其复制到/etc/bash_completion.d/

另请参阅: https ://git-scm.com/book/en/v1/Git-Basics-Tips-and-Tricks

于 2017-05-19T14:48:31.930 回答
3

我必须安装以下 Cygwin 软件包:

  • bash-completion
  • bash-completion-devel
于 2018-02-10T04:56:10.793 回答
2

截至 2016 年 5 月,我只需使用此处的 Cygwin 设置实用程序 (v2.874) 安装 bash-completion 包,就可以让 git & svn tab 完成工作:https ://www.cygwin.com/install.html . 确保选择“从 Internet 安装”选项。bash-completion 包列在 Shells 类别下。

于 2016-05-10T16:08:18.050 回答