OS X As linhas de terminal não entram em pergaminho

8

Eu tenho um problema que surge ao usar o Terminal do Mac OS X (TERM = xterm): às vezes ele fica em um estado onde as linhas que rolam para fora do topo não são adicionadas ao buffer de rolagem. Eu não estou usando screen ou similar; este é um shell bash simples dentro de uma guia Terminal.

Ele não faz isso imediatamente após abrir uma nova guia. Eu acredito que é um efeito colateral de algo que eu corri na aba do problema. Meu palpite é que tem algo a ver com a emulação xterm, possivelmente a região de rolagem.

O que não funcionou:

  • Reinicialização suave e física por meio do menu Shell
  • executando reset na guia

Existe uma maneira confiável de redefinir o Terminal e / ou o estado xterm?

Alguém pode fornecer uma explicação para o que está acontecendo, mesmo que a única correção seja fechar a guia e abrir uma nova?

    
por Steve Madsen 15.03.2010 / 16:34

1 resposta

14

Isso significa que o terminal está usando o buffer de tela alternativo. Há uma tela principal, que rola para o log de rolagem, e uma tela alternativa que não. Programas "tela cheia" ou "orientados a tela" como top, less, emacs, vim e screen alternam o terminal para a tela alternativa por padrão.

Cada tela tem seu próprio conteúdo e estado. Ter uma tela alternativa permite que os programas assumam a tela inteira e, em seguida, restaure o conteúdo anterior quando eles saírem, voltando à tela principal.

A partir do Mac OS X Lion 10.7, o Terminal tem um item de menu que você pode usar para alternar as telas manualmente:

View > Show/Hide Alternate Screen

Isso é fornecido principalmente para que você possa visualizar ou copiar texto da tela alternativa após a saída de um programa de "tela cheia". Xterm tem um comando similar.

Você também pode usá-lo para forçar manualmente um programa a usar uma tela específica, para controlar se a saída vai para o log de rolagem, por exemplo. No entanto, se você estiver usando um programa que alterna explicitamente para a tela alternativa, poderá confundi-lo ou obter resultados inesperados se forçar a tela principal enquanto o programa estiver em execução, portanto, use isso com cuidado.

Dependendo do programa, pode ter um argumento de linha de comando ou algum outro meio para configurá-lo para usar a tela principal. por exemplo, less -X .

Algumas entradas terminográficas são projetadas especificamente para suprimir o uso da tela alternativa, por exemplo, xterm1 . TERM=xterm1 emacs executará o Emacs na tela principal. Não recomendo usar xterm1 permanentemente, porque desativa vários outros recursos úteis em comparação com o padrão xterm-256color no Lion.

Você também pode alternar as telas usando o comando tput para emitir as seqüências de escape de dentro de um shell ou script. tput smcup muda para a tela alternativa e tput rmcup volta para a tela principal.

Para ver qual programa está sendo executado no momento, observe o nome do programa exibido na janela Terminal ou o título da guia, ou observe a janela Inspetor ( Shell > Show Inspector ). O último processo na lista no Inspector é (geralmente) o programa atual usando a tela. É o que você precisará configurar para usar a tela principal.

    
por 28.08.2011 / 13:38