Comportamento dinâmico de conclusão do Bash

Comportamento dinâmico de conclusão do Bash

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.

informação relacionada