Como aumentar o buffer de rolagem em uma sessão de tela em execução?

237

Digamos que eu tenho uma sessão de tela em execução no momento em que estou interagindo através da massa. Percebi que o buffer de rolagem é muito pequeno e gostaria de aumentá-lo sem iniciar uma nova sessão de tela.

Existe uma maneira de fazer isso?

Zach
fonte
Apenas no caso de alguém querer aumentar o buffer de rolagem ao iniciar uma nova sessão:screen -h <numlines>
Scz

Respostas:

180

A página de manual explica que você pode entrar no modo de linha de comando em uma sessão em execução, digitando Ctrl+ Ae :, em seguida, emitindo o scrollback <num>comando.

Frédéric Hamidi
fonte
4
Você terá que fazer cada janela da tela atual individualmente.
precisa
2
onde <num>é o número de linhas de scrollback
rakslice
Se você atingir o buffer máximo padrão, não poderá mostrar mais histórico, e a configuração por scrollback <num>ele não ajudará mais a estender o buffer, você precisará refazer o último comando para obter todo o buffer do histórico.
Kamil
362

Imprensa Ctrl-a, em seguida, :e tipo, em seguida,

scrollback 10000

para obter um buffer de 10000 linhas, por exemplo.

Você também pode definir o número padrão de linhas de rolagem adicionando

defscrollback 10000

ao seu ~/.screenrcarquivo.

Para rolar (se o seu terminal não permitir, por padrão), pressione Ctrl-a ESC e, em seguida, role (com o habitual Ctrl-fpara a página seguinte ou Ctrl-apara a página anterior, ou apenas com a roda do mouse / dois dedos). Para sair do modo de rolagem, basta pressionarESC .

Outra dica: Ctrl-a imostra sua configuração atual do buffer.

Lee Netherton
fonte
9
+1 para a dica com o defscrollback definido como 1024 no Ubuntu 12.10 (que eu tenho que usar no trabalho).
7114 erik
2
byobu-screenno Ubuntu 12.04 parece definir o defscrollback para 10000
chronospoon
4
Eu queria salientar que se o seu screenrc abre termos adicionais para você, você precisa colocar o defscrollback antes as janelas são abertas, ou então eles vão apenas se o padrão 1024
majikman
não está funcionando em um mac. Coloquei startup_message off' and 'defscrollback 5000' into my newly created ~ / .screenrc` e está recebendo a primeira linha, mas a segunda parece ser ignorada.
Ben
9

Há uma quantidade mínima de buffer "padrão" quando você inicia uma sessão de 'tela' na sua 'sessão de massa'. Eu uso muito telas no meu trabalho, para que eu possa dizer que você não terá uma combinação de buffer 'screen' e buffer 'putty' dentro da sessão 'screen'.

Definir o número padrão de linhas de rolagem adicionando defscrollback 10000 ao seu ~/.screenrcarquivo é a solução correta.

A propósito, eu uso "defscrollback 200000" no meu ./screenrcarquivo.

Oracle DBA 2000 aC
fonte
4

Como já mencionado, temos duas maneiras!

 Configuração interativa por tela (sessão)

E é feito de forma interativa! E entre em vigor imediatamente!

CTRL + Aseguido por :E nós digitamos scrollback 1000000E batemosENTER

Você se desconecta da tela e volta! Será sempre o mesmo.

Você abre outra nova tela! E o valor é redefinido novamente para o padrão! Portanto, não é uma configuração global!

 E a configuração padrão permanente

O que é feito adicionando defscrollback 1000000a .screenrc(em casa)

defscrollbacke não scrollback(def significa padrão)

O que você precisa saber é se o arquivo não for criado! Você cria !

> cd ~ && vim .screenrc

E você adiciona defscrollback 1000000a ele!

Ou em um comando

> echo "defscrollback 1000000" >> .screenrc

(se ainda não tiver sido criado)

Entrando em vigor

Quando você adiciona o padrão a .screenrc! A tela já em execução na reconexão não terá efeito! o.screenrc corrida na criação da tela! E isso faz sentido! Assim como em um console normal e lançamento de shell!

E todas as novas telas criadas terão o valor definido!

Verificando o tamanho efetivo do buffer da tela

Para verificar o tipo CTRL + Aseguido pori

E o resultado será tão

insira a descrição da imagem aqui

É importante ressaltar que o tamanho do buffer é o número após o sinal +
(na ilustração, defino-o como 1 000 000)

Observe também que quando você o altera interativamente! O efeito é imediato e assume o valor padrão!

Rolagem

CTRL+ Aseguido por ESC(para entrar no modo de cópia).

Em seguida, navegue com Up, DownouPgUp PgDown

E ESCnovamente para sair desse modo.

(Informações extras: para copiar o hit ENTERe começar a selecionar!ENTER novamente para copiar! Simples e legal)

Agora o buffer é maior!

E isso resume os detalhes importantes!

Mohamed Allal
fonte
É bom saber as etapas de como rolar!
skytree 13/06
obrigado. aprendeu um novo truque para verificar o tamanho do buffer da tela usando: CTRL + A seguido de i
alphaGeek 17/06
3

AVISO: definir esse valor muito alto pode causar um soluço significativo no sistema. Quanto maior o valor definido, mais memória virtual é alocada para o processo de tela ao iniciar a sessão de tela. Defino meu ~ / .screenrc como "defscrollback 123456789" e, quando iniciei uma tela, todo o meu sistema congelou por uns bons 10 minutos antes de voltar ao ponto em que consegui interromper o processo da tela (que consumia 16,6 GB de VIRT mem até então).

1GLENCo
fonte
-3

Para a posteridade, essa resposta está incorreta, conforme observado por Steven Lu. No entanto, deixando o texto original.

Resposta original:

Para aqueles que chegam via pesquisa na web (vários anos depois) ...

Ao usar a tela, seu buffer de rolagem é uma combinação dos dois screen buffer de retorno de rolagem das duas respostas anteriores, bem como do buffer de rolagem de massa de vidraceiro.

Certifique-se de aumentar o buffer de rolagem da massa de vidraceiro, bem como o buffer de rolagem da tela; caso contrário, a própria janela da massa de vidraceiro não permitirá que você role para trás para ver o screenhistórico de rolagem da sua rolagem (supere rolando na tela com ctrl+a->ctrl+u)

Você pode alterar o limite de rolagem da massa de vidraceiro na categoria "Janela" nas configurações. Sair e reabrir uma sessão de massa para sua tela não a fechará (supondo que você feche a janela de massa e não digite exit), conforme solicitado pelo OP.

Espero que ajude a identificar por que o aumento do buffer de rolagem da tela não resolve o problema de alguém.

Brad P.
fonte
17
Isso é impreciso. A tela mantém seu próprio buffer. Quando você rola a tela para cima usando o modo de cópia, a tela está alimentando o próprio histórico da tela por meio de maldições. Quando um multiplexador de terminal como o ecrã está a ser utilizado, o buffer do emulador de terminal nativo não está a ser utilizado (de facto ela pode ou não acumulam lixo como um efeito colateral)
Steven Lu
bons pontos, e acredito que você está correto ... Será que devo excluir minha resposta?
Brad P.
Não tenho certeza. Como isso também removeria meu comentário de que as pessoas parecem gostar.
Steven Lu
3
haha, muito certo. Acho que vou editá-lo para notar que é incorreto, mas deixar o texto original
Brad P.
2
Claro, obrigado. Prefiro deixar apenas alterações aditivas em um site como esse para que as pessoas possam se afastar dele sem ficarem confusas.
Steven Lu