
Me gustaría tener 2 comportamientos diferentes de "pestaña" según el contexto de uso.
Me gustaría tener el comportamiento predeterminado de bind '"\t":complete'
cualquier momento, excepto cuando los usuarios intentan completar los argumentos del comando "mybashfunction". En este caso, llamo a una función especial para generar la finalización, pero me gustaría que la "pestaña" funcione como si bind '"\t":menu-complete'
estuviera configurada.
Respuesta1
Creo que su biblioteca readline solo admitirá un tipo de comportamiento de finalización de tabulación a la vez.
Respuesta2
¿Es esto lo que estás buscando?Bash: menú completo solo para algunas coincidencias
Respuesta3
Puedes lograr esto usando reglas completas de bash...
_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
Esto no afectará la finalización normal de bash, pero cuando completes myfunc con la pestaña tendrás "cero uno dos" como posibles finalizaciones.
Editar: oh sí, inserte esto en su bashrc o similar para que se obtenga en nuevos shells.