Cygwin git tab完成

时间:2013-09-10 15:20:20

标签: bash cygwin bash-completion

我在Windows上安装了Cygwin,其中一个默认包是git tab completion,但是我没有完成标签。

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

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

似乎还应该有一个/etc/bash_completion.d目录,其中包含git/,但我也没有。{

7 个答案:

答案 0 :(得分:49)

2016年更新:安装包bash-completion

答案 1 :(得分:9)

上面的答案为bash_completion.d /中的几乎每个脚本打印出bash: have: command not found。来自链接帖子的This answer为我解决了这个问题:

  

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(感谢Slow load time of bash in cygwin)。

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

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

答案 2 :(得分:5)

在我的.bashrc

 for file in /etc/bash_completion.d/* ; do
    source "$file"
 done

答案 3 :(得分:4)

安装" git-completion"包从cmd.exe运行:

cyg-get git-completion

之后你不需要修改你的.bashrc。

答案 4 :(得分: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

答案 5 :(得分:3)

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

  • bash-completion
  • bash-completion-devel

答案 6 :(得分:2)

截至2016年5月,我得到了git& svn选项卡完成工作,只需使用此处的Cygwin设置实用程序(v2.874)安装bash-completion软件包:https://www.cygwin.com/install.html。请务必选择“从互联网安装”#39;选项。 bash-completion包列在Shells类别下。