Bash 从非前缀子字符串完成Git分支名称选项卡
Git完成脚本允许您在命令行中标记分支的完整名称。我希望能够基于分支名称中的任何子字符串完成制表符 示例分支:Bash 从非前缀子字符串完成Git分支名称选项卡,bash,git,autocomplete,Bash,Git,Autocomplete,Git完成脚本允许您在命令行中标记分支的完整名称。我希望能够基于分支名称中的任何子字符串完成制表符 示例分支: TS-45673-great-branch TS-45691-lesser-branch 要当前使用制表符完成以访问TS-45673-great-branch,只需键入TS-4567 我希望能够键入gre 今天有没有办法做到这一点?我不确定您是否找到了更好的解决方案。我有一个小问题。我的新公司也希望遵循类似的分支机构惯例。(从技术上讲,本地分支机构不应该是一个问题,但在推动其进行公关
TS-45673-great-branch
TS-45691-lesser-branch
要当前使用制表符完成以访问TS-45673-great-branch
,只需键入TS-4567
我希望能够键入gre
今天有没有办法做到这一点?我不确定您是否找到了更好的解决方案。我有一个小问题。我的新公司也希望遵循类似的分支机构惯例。(从技术上讲,本地分支机构不应该是一个问题,但在推动其进行公关时,如果我们遵循本地分支机构的相同模式,则会很方便) 这就是我做的黑客。 首先,找到一种方法来获取所需分支的列表。比如说,
git branch | cut -c3- | egrep "^TS-[[:digit:]]+-$cur"
例如,在git完成脚本上,如果使用此脚本
转到\uu git\u refs()
在该方法中,只需将这一行添加到顶部的某个位置。(我找不到理想的位置,所以在顶部添加了它。打印的任何行都将被视为自动补全选项。即使echo hello
也会将hello视为选项
如果您想找到git完成脚本所在的位置
$ complete -p git
complete -o bashdefault -o default -o nospace -F __git_wrap__git_main git
然后,\uuuuugit\uwrap\uuuugit\umain
是命令
# Turn on extended shell debugging
shopt -s extdebug
# Dump the source file and other details
declare -F __git_wrap__git_main
# Turn off extended shell debugging
shopt -u extdebug
注:
grear\u分支
,然后键入gre
和tab,将打印所有三个分支,并且只会填写三个分支共用的前缀(TS-1)“^TS-[:digit:][]+-$cur”
”^TS-[:digit:][]+-.$cur”即可添加更好的子字符串搜索local pattern=`echo $cur | sed -e 's/\(.\)/\1.*/g'`
git branch | cut -c3- | egrep "^TS-[[:digit:]]+-$pattern"