É possível que o bash / readline limpe as sugestões de conclusão do terminal?

4

Se você estiver usando zsh e fazer uma conclusão da guia para comandos, nomes de caminho, opções etc, sempre que houver várias correspondências possíveis, as sugestões serão exibidas abaixo do prompt.
Depois de escolher uma sugestão, o zsh removerá a lista de sugestões do terminal, como você pode ver aqui:

Origem da imagem

Em contraste, quando o bash oferece sugestões de conclusão, ele exibe a lista e retorna para um novo prompt.

Fonte da imagem
O comportamento zsh é preferível a mim, pois as sugestões que eu nunca usei não oferecem nenhum valor e apenas produzem mais "ruído" no terminal.
É possível configurar bash / readline para se comportar como zsh desta maneira?

    
por the_velour_fog 14.02.2016 / 04:39

1 resposta

1

curto: é possível, mas complexo como .inputrc de ligações.

long: Como sugerido em um comentário, você poderia fazer algo assim em seu prompt bash e ligações de linha de leitura.

Salvar / restaurar o cursor seria ineficaz, já que o único ponto em que você seria capaz de limpar com segurança o restante da tela seria pressionar Enter para concluir a seleção.

Depois de passar o controle para accept-line , é tarde demais para limpar o restante da tela. É possível (mas complexo) definir uma série de "bindings" reais e ad hoc para tornar a readline mais de uma operação. Veja por exemplo

Mas essa abordagem limita o envio de caracteres para bash e a emissão de comandos para readline. Nenhum dos comandos readline faz

printf '3[J'

para limpar o restante da tela. O mais próximo seria o clear-screen do readline ( não o que você quer). Sua ligação teria que fazer algo como

  • beginning-of-line
  • insira " printf '3[J'; "
  • end-of-line
  • accept-line

O end-of-line funcionaria em torno de uma peculiaridade de readline. Ele permite que você pressione Enter em qualquer lugar na linha. Se o seu cursor estivesse no meio da linha, você teria apenas um fragmento de sua entrada deixada visível (embora o bash obtenha a string inteira).

    
por 10.08.2016 / 02:53