Tout simplement, non.
Raison:
Il n'y a pas d'option dans "set" ou "shopt", pour spécifier le format de sortie des suggestions de complétion de tabulation. La seule exception est COLONNES environ, cependant, vous ne pouvez pas le changer pour une valeur différente.
Pour les complétions personnalisées (comme --option Completion), vous pouvez remplacer la fonction d'achèvement par une sortie vers stdout / stderr ls -l
avec les suggestions d'achèvement. Cependant, l’achèvement du nom de fichier est codé en dur, vous ne pouvez pas le remplacer par le complete
intégré
Voici un court exemple incorrect pour afficher des informations détaillées ainsi que des suggestions pour compléter les onglets. Imaginez que vous avez un programme foo
et il accepte quatre options bar
, barr
, barrr
, car
, la fonction d'achèvement sale serait:
function _foo() {
local cmds=(bar barr barrr car)
local cur n s
if [ $COMP_CWORD = 1 ]; then
cur="${COMP_WORDS[1]}"
n="${#cur}"
# -- dirty hack begin --
echo
cat <<EOT | while read s; do [ "${s:0:n}" = "$cur" ] && echo "$s"; done
bar: choose this option if you feel well
barr: choose this option if you feel hungry
barrr: choose this option if you are starving
car: choose this option if you want a car
EOT
# ++ dirty hack end ++
COMPREPLY=($(compgen -W "${cmds[*]}" "$cur"))
fi
} && complete -F _foo foo
Maintenant, vous pouvez voir un court helpdoc avant les suggestions:
$ foo ba<tab>
bar: choose this option if you feel well
barr: choose this option if you feel hungry
barrr: choose this option if you are starving
r
(Le seul caractère 'r' dans la dernière ligne est l'auto-complétion du préfixe ba
.)
Et, lorsque le préfixe est ambigu, la fonction d'achèvement est évaluée deux fois, la liste de suggestions arrive à la fin:
$ foo bar<tab><tab>
bar: choose this option if you feel well
barr: choose this option if you feel hungry
barrr: choose this option if you are starving
bar: choose this option if you feel well
barr: choose this option if you feel hungry
barrr: choose this option if you are starving
bar barr barrr