Se você estiver usando zsh e completar tabcomandos, nomes de caminho, opções, etc., sempre que houver várias correspondências potenciais, 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:
Por outro lado, 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 para mim, pois as sugestões que nunca usei não oferecem valor e apenas produzem mais "ruído" no terminal.
É possível configurar o bash/readline para se comportar como zsh dessa maneira?
Responder1
resumindo: é possível, mas complexo como .inputrc
ligações.
longo: conforme sugerido em um comentário, vocêpoderiafaça algo assim no prompt do bash e nas ligações readline.
Salvar/restaurar o cursor seria ineficaz, pois o único ponto em que você seria capaz de limpar com segurança o restante da tela seria pressionar Enterpara concluir a seleção.
Depois de passar o controle para accept-line
, será tarde demais para limpar o restante da tela. É possível (mas complexo) definir uma série de "ligações de teclas" reais e ad hoc para fazer com que o readline execute mais de uma operação. Veja por exemplo
Mas essa abordagem limita o envio de caracteres para o bash e a emissão de comandos para o readline. Nenhum dos comandos readline faz
printf '\033[J'
para limpar orestanteda tela. O mais próximo seria o built-in do readline clear-screen
(nãoo que você quer). Sua ligação teria que fazer algo como
beginning-of-line
- insira "
printf '\033[J';
" end-of-line
accept-line
Isso end-of-line
contornaria uma peculiaridade da readline. Ele permite que você pressioneEnter em qualquer lugarna linha. Se o seu cursor estivesse no meio da linha, você teria apenas um fragmento da sua entrada visível (embora o bash obtivesse a string inteira).