
Gostaria de ter 2 comportamentos diferentes de "tab" dependendo do contexto de uso.
Eu gostaria de ter o comportamento padrão a bind '"\t":complete'
qualquer momento, exceto quando os usuários estiverem tentando completar os argumentos do comando "mybashfunction". Nesse caso chamo uma função especial para gerar o preenchimento, mas gostaria que "tab" funcionasse como se bind '"\t":menu-complete'
estivesse configurado.
Responder1
Acredito que sua biblioteca readline suportará apenas um tipo de comportamento de preenchimento de tabulação por vez.
Responder2
É isso que você está procurando?Bash: menu completo apenas para algumas partidas
Responder3
Você pode conseguir isso usando regras completas do 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
Isso não afetará a conclusão normal do bash, mas quando você tab complete myfunc você terá "zero um dois" como possíveis conclusões.
Editar: ah, sim, coloque isso em seu bashrc ou similar para que seja originado em novos shells.