
Ich hätte gerne zwei verschiedene Verhaltensweisen von „Tab“, je nach Nutzungskontext.
Ich hätte gerne das Standardverhalten, das bind '"\t":complete'
immer gilt, außer wenn Benutzer versuchen, Argumente des Befehls „mybashfunction“ zu vervollständigen. In diesem Fall rufe ich eine spezielle Funktion auf, um die Vervollständigung zu generieren, aber ich möchte, dass „Tab“ so funktioniert, als wäre es bind '"\t":menu-complete'
festgelegt.
Antwort1
Ich glaube, dass die Readline-Bibliothek jeweils nur eine Art von Tab-Vervollständigungsverhalten unterstützt.
Antwort2
Ist es das, wonach Sie suchen?Bash: Menü nur für wenige Übereinstimmungen vervollständigt
Antwort3
Sie können dies erreichen, indem Sie vollständige Bash-Regeln verwenden …
_myfunc() {
_opts="zero one two"
# COMPREPLY is bash built-in for array of possible completions
COMPREPLY=()
# cur & prev are current & previous words typed in shell
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
COMPREPLY=( $( compgen -W "${_opts}" -- ${cur} ))
return 0
}
complete -F _myfunc myfunc
Dadurch wird die normale Vervollständigung von Bash nicht berührt, aber wenn Sie myfunc mit der Tab-Taste vervollständigen, stehen Ihnen als mögliche Vervollständigungen „null eins zwei“ zur Verfügung.
Bearbeiten: Oh ja, stopfen Sie das in Ihre Bashrc oder Ähnliches, damit es in neuen Shells als Quelle verwendet wird.