Eu tenho um problema que surge ao usar o Terminal do Mac OS X (TERM = xterm): às vezes ele entra em um estado em que as linhas que rolam para cima 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.
Não faz isso imediatamente após abrir uma nova guia. Acredito que seja um efeito colateral de algo que executei na guia do problema. Meu palpite é que ele tem algo a ver com a emulação xterm, possivelmente a região de rolagem.
O que não funcionou:
- Redefinição suave e física através 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 solução seja fechar a guia e abrir uma nova?
Respostas:
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 de "tela cheia" ou "orientados à 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 restaure o conteúdo anterior quando eles saírem, voltando à tela principal.
No Mac OS X Lion 10.7, o Terminal possui um item de menu que você pode usar para alternar manualmente as telas:
Isso é fornecido principalmente para que você possa exibir ou copiar texto da tela alternativa após a saída do programa "tela cheia". Xterm tem um comando semelhante.
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 atualmente usando um programa que muda explicitamente para a tela alternativa, poderá confundi-lo ou obter resultados inesperados se forçá-lo à tela principal enquanto o programa estiver em execução, portanto, use-o com cuidado.
Dependendo do programa, ele 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 terminfo são projetadas especificamente para suprimir usando a tela alternativa, por exemplo
xterm1
,.TERM=xterm1 emacs
executará o Emacs na tela principal. Não recomendo usarxterm1
permanentemente, porque desativa vários outros recursos úteis em comparação com o padrãoxterm-256color
no Lion.Você também pode alternar as telas usando o
tput
comando para emitir as seqüências de escape de dentro de um shell ou script.tput smcup
muda para a tela alternativa etput rmcup
volta para a tela principal.Para ver qual programa está sendo executado no momento, veja o nome do programa exibido na janela do terminal ou no título da guia ou na janela do Inspetor ( Shell> Mostrar Inspetor ). O último processo da lista no Inspetor é (geralmente) o programa atual usando a tela. É o que você precisará configurar para usar a tela principal.
fonte
tput rmcup
ssh
sessão em uma máquina remota falhou (atingiu o tempo limite?) Enquanto eu estavavi
, aparentemente deixando o terminal na Tela Alternativa (porquevi
nunca tive a chance de limpar). Posteriormente, qualquer novassh
sessão no mesmo terminal exibirá o problema descrito pelo OP, até que eu resolvesse o problema selecionando o item de menu Exibir> Ocultar tela alternativa .