Comportamento dinâmico de conclusão do Bash

2

Eu gostaria de ter dois comportamentos diferentes de "tab" dependendo do contexto de uso.
Eu gostaria de ter o comportamento padrão de bind '"\t":complete' a qualquer momento, exceto quando os usuários estão tentando concluir argumentos do comando "mybashfunction". Nesse caso, eu chamo uma função especial para gerar a conclusão, mas gostaria que a "guia" funcionasse como se bind '"\t":menu-complete' estivesse definido.

    
por radius 16.07.2009 / 17:12

3 respostas

2

Acredito que sua biblioteca readline suporta apenas um tipo de comportamento de conclusão de tabulação de cada vez.

    
por 21.07.2009 / 04:31
0

É isso que você está procurando? Bash: menu completo apenas para alguns jogos

    
por 11.08.2009 / 09:28
0

Você pode conseguir isso usando as 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 vai tocar na conclusão normal do bash, mas quando você fizer tab com o myfunc completo você terá "zero um dois" como conclusões possíveis.

Edit: oh sim, coloque isso no seu bashrc ou similar, então ele é originado em novos shells.

    
por 11.08.2009 / 09:58