Pergunta

Pergunta: Eu tenho uma pergunta que é aparentemente não respondidas por este já pediu Bash conclusão pergunta no Estouro de Pilha.A questão é, como obter Bash alias conclusão (para qualquer alias) em uma subseqüência parcial.

Exemplo: Por exemplo, suponha que tem as seguintes abreviaturas:

open.alicehome="cd /usr/home/alice"
open.bakerhome="cd /usr/home/baker"
open.charliehome="cd /usr/home/charlie"
gohomenow="shutdown -now"

Eu gostaria de preguiçosamente basta digitar "baker{{GUIA}}" para invocar o segundo alias.

Eu gostaria de preguiçosamente basta digitar "casa{{GUIA}}" para obter uma lista de todos os acima aliases que eu possa escolher, com o teclado (ideal) ou optar por escrever uma inequívoca subseqüência de caracteres que distingue entre as três opções (menos do que o ideal).

..OU ..

Eu gostaria de preguiçosamente basta digitar "home" e, em seguida, prima repetidamente a tecla {{GUIA}} até que o específico alias eu quero mostra-se, em seguida, prima {{ENTER}} para executá-lo.

Sinta-se livre para ser criativo: Se você tem uma maneira de fazer isso, mesmo se necessita de recorrer a extrema guru hackery, por favor, sinta-se livre para compartilhá-lo e sinta-se livre para explicar o seu guru hackery ao nível de uma criança de cinco anos que vai ter que tentar implementar a sua ideia para si mesmo.

Links existentes páginas web ou RTFMs são bem-vindos.

Foi útil?

Solução

Você pode gerar as correspondências para um determinado subseqüência de caracteres com compgen -c -X'!*substring*'

Para incluir isso no bash preenchimento automático você pode criar um .bash_completion arquivo em seu diretório home contém algo como isto:

_comp() {
    local cur

    cur=${COMP_WORDS[$COMP_CWORD]}

    COMPREPLY=( $( compgen -c -X '!*'$cur'*' ) )

}
complete -F _comp $nospace eval

Correspondem a esta função será executada quando você pressionar <TAB> os argumentos para o eval de comando.Ainda não encontrei uma forma de incluir uma nova função correspondente para a primeira pesquisa de comandos em bash, eu só encontrada documentação sobre como adicionar personalizado conclusões para um comando específico, como eval acima.

Mas sou um pouco cético quanto à utilidade que este é...Não há nenhuma maneira fácil para seleccionar qual a correspondência que você deseja a partir da lista.

Outras dicas

Se você realmente quer mudar bash's guia de comportamento,

# ~/.inputrc
# The default binding for [Tab] is ``complete'', which is what we're used to.
# ``menu-complete'' gives you irssi-like behavior: cycle through completions.
"\t": menu-complete

Isto está documentado no O GNU Readline Biblioteca # Deixar Readline Tipo Para Você.

Provavelmente, você pode conseguir o que você quer com o costume bash_completion definições, mas eu não vou fazer o trabalho para você, ok?:-)

Se você não sabe do que estou falando, veja aqui e aqui para obter detalhes.A propósito, eu acharia muito chato isso

Eu gostaria de preguiçosamente basta digitar "home" e, em seguida, prima repetidamente. {{GUIA}} até que o específico alias eu deseja mostra-se, em seguida, prima {{ENTER}} para executá-lo.

o que eu acho é que a M$ estilo de "conclusão" (você está vindo para DOS/windows ambiente?)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top