Por que se incomodar?
Limpar o buffer de rolagem é útil de várias maneiras, por exemplo, quando eu desejo executar algum comando com saída longa e deseja rolar rapidamente para o início desta saída. Quando o buffer de rolagem está desmarcado, posso simplesmente rolar para o topo e será feito.
Algumas considerações:
Existe o comando clear
, de acordo com o homem,
clear clears your screen if this is possible, including its scrollback buffer (if the extended "E3" capability is defined).
No gnome-terminal clear
não não limpa o buffer de rolagem. (O que é o recurso "E3"?)
Existe também reset
, que limpa, mas faz um pouco mais do que isso, e é muito lento (no meu sistema leva mais de um segundo, o que é um atraso significativo para os humanos serem notados).
E há echo -ne '\ec'
ou echo -ne '3c'
, que faz o trabalho. E, de fato, é muito mais rápido que reset
.
A pergunta é, o que é \ec
sequence, como ele difere de qual clear
e reset
, e por que não existe um comando separado para ele?
Há também a sequência chave C-l
da readline, que por padrão está vinculada ao comando clear-screen
(ou seja, comando readline, não shell). O que é esse comando? Qual sequência de escape ela emite? Como de fato, isso funciona? Ele executa o comando shell? Ou o que? Novamente, no gnome-terminal, parece que funciona apenas cuspindo linhas em branco até que o prompt apareça na linha superior do terminal. Não tenho certeza sobre outros emuladores de terminal. Esse é um comportamento muito complicado. Ele polui o retrocesso com pedaços de vazio, então você deve rolar mais e mais. É como um hack, em vez de uma solução limpa.
Outra questão é, existe um comando readline para a sequência \ec
mencionada? Eu quero vinculá-lo a C-l
em vez disso, porque eu sempre quero limpar o buffer de rolagem quando limpo a tela.
E outra pergunta é como digitar essa seqüência de escape no terminal, para executar a ação desejada? Então não é necessário pensar em ligar C-l
a outro comando readline (se tal comando existir). Tentei digitar Esc
e, em seguida, c
, mas isso não funciona.
UPDATE
Essa pergunta foi respondida principalmente aqui: link . É uma resposta muito boa, que explica quase todas as perguntas feitas aqui.