/ / Ist es in bash möglich, die Mitte eines Wortes zu vervollständigen? - Bash, Tab-Vervollständigung

Ist es in bash möglich, die Mitte eines Wortes zu vervollständigen? - Bash, Tab-Vervollständigung

Ich habe ein einfaches Bash-Vervollst√§ndigungsskript f√ľr meinen benutzerdefinierten Git-Branch-Sucher.

#/usr/bin/env bash
_branch_completions()
{
local word="${COMP_WORDS[COMP_CWORD]}";
if [ ! -z "$word" ]
then
COMPREPLY=($(compgen -W "`git branch | grep $word`" "${COMP_WORDS[1]}"))
fi
}

complete -F _branch_completions branch

Das "branch" -Skript sucht in Zweigen, nach denen ich suchen kann

branch 5.9

und ich werde bekommen

1 release/5.9.0
2 hotfix/5.9.1
3 hotfix/5.9.2
Please select a branch

Mein Bash-Vervollständigungsskript vervollständigt die Verzweigungsfreigabe TabTab und gib mir release / 5.9.0 aber ich möchte in der Lage sein, Zweig 5.9 zu tun TabTab und hol sie alle

Antworten:

3 f√ľr Antwort ‚ĄĖ 1

Von dem Bash-Manpage:

compgen [option] [word]
...
If word is specified, only those completions matching word will be displayed.

Sie filtern die Liste bereits mit grep. Um das gew√ľnschte Verhalten zu erzielen, k√∂nnen Sie einfach das zweite Argument f√ľr compgen weglassen und Ihre Zeile erstellen:

COMPREPLY=($(compgen -W "`git branch | grep $word`"))