【问题标题】:Git bash completion does not complete git commands as expectedGit bash 完成未按预期完成 git 命令
【发布时间】:2020-03-25 17:43:58
【问题描述】:

设置了对git 的 bash 完成支持后(版本 2.14.5 在 Slackware Linux 14.2 上)使用来自 git 主存储库的文件 contrib/completion/git-completion.bash,如前所述,并且已经对其他命令执行过操作,我希望将 git commands 作为常用的完成词TAB 完成git [TAB][TAB] 一样点击。例如:

$ git c[TAB][TAB]
checkout commit clone ...

而不是获取任何 git 命令,如 checkoutcommit 或其他,只建议或完成文件名。然而,当使用像 git --b[TAB][TAB] 这样的破折号请求完成时,建议或完成像 --bare 这样的 git 选项

我知道,那里有很多类似的问题,但是尽管搜索了答案,但我找不到解决此问题的适当解决方案。

  • git-completion.bash 文件来源正确;使用. git-completion.bash 采购后,其功能可在执行的 bash 环境中使用,如declare -f 所示。
  • progcomp shell 选项是on
  • git 完成函数注册为complete -p git 的输出显示:
    $ complete -p git
    complete -o bashdefault -o default -o nospace -F __git_wrap__git_main git
    
  • 检查源git-completion.bash 文件后,我可以说,完成函数__git_wrap__git_maingit [TAB] 命中时被调用,但COMPREPLY 变量在没有double 的情况下请求完成时未填充完成字-破折号 --*

有谁知道为什么只有 git options 完成而 git commands 没有完成?

【问题讨论】:

  • 您使用的是什么 gt 版本?在哪个操作系统上?
  • 更新了问题详情:Slackware Linux 14.2 上的 GIT 版本 2.14.5

标签: bash git completion


【解决方案1】:

自 Git 2.14 以来,完成度有了很多改进(特别是Git 2.18),我会首先检查 Git 2.26 是否仍然存在相同的问题(可能是 using slpkg

contrib/completion/git-completion.bash 有一个丰富且最近的history

【讨论】:

  • 基本上我不是重新安装部分工作环境的朋友。因此,更改整个 git 套件以换取简单的 bash 完成工作似乎相当昂贵,尤其是考虑到这样一个事实,即大量使用大量现有 git 功能的运行环境运行良好。
  • 完成脚本是一个使用 Bash Completion Facility 的 bash 脚本。我认为补全脚本提供 static 补全词可能没什么大不了的;只是git help 显示的最基本的 git 命令。 远远失败。一个很好的例子是多么容易陷入错误。 但是,我听从了你的建议,并根据其当前来源编译了 git,这会导致正确的完成功能。 虽然不清楚为什么完成脚本不能在 2.14 版本上运行,剩下要说的是:谢谢。
  • @Nero 欢迎您。作为一种解决方案,这似乎确实有点极端,但我不能排除最新的完成脚本和最新的 Git 之间的交互,这将使所述脚本正常工作(与最新的 Git 版本一起使用时)
猜你喜欢
  • 2015-06-25
  • 2013-07-02
  • 2015-01-18
  • 2014-12-31
  • 2012-04-09
  • 2014-10-15
  • 1970-01-01
  • 2011-11-08
  • 1970-01-01
相关资源
最近更新 更多