Por que o nano não redesenha a tela corretamente em alguns sistemas?

0

Este é um estranho.

Em alguns dos meus sistemas Debian - mas não todos - eu fico com uma estranha corrupção em certos programas de terminal, como nano . Isso não acontece, no entanto, ao usar less . Neste caso em particular, estou usando o Debian 7.9 "Wheezy" 64-bit. Eu instalei um monte de pacotes, mas o IIRC sabe que esse problema aconteceu mesmo em uma instalação nova.

O problema é o seguinte. Eu abro um documento de texto grande (ou seja, um com várias páginas) em nano e, usando as teclas do cursor, percorra-o. Sempre que o cursor passa abaixo da parte inferior da tela, o documento salta para metade da página. Isto é, naturalmente, normal. O que não é normal, no entanto, é o fato de que somente a metade inferior da tela é atualizada!

Da mesma forma, quando eu movo o cursor para o topo, a página anterior é mostrada, mas somente a metade superior da tela é atualizada.

Isso é melhor ilustrado, eu acho, com ilustrações reais. Por favor, considere a seguinte imagem de um arquivo fictício contendo apenas números de linha:

Temqueserumafotografia,porqueoproblemanãoocorreporssh.Também,estranhamente,nãoocorreseeuemitirprimeiroocomandoscreen.

Deslocoocursorparabaixodalinha43eaconteceoseguinte:

Observecomoametadeinferiordatelaéatualizada,paramostraraslinhasapartirde44,enquantoametadesuperiorpermaneceinalterada.

Seeumovernovamenteocursorparaaparteinferiordatela,issoaconteceránovamente:

Maisumavez,ametadeinferiordatelafoiatualizadaparamostraraslinhascomeçandoem66,enquantoametadesuperiordatelapermaneceinalterada.

Seeumoverocursorparaotopodatela,ametadesuperiorexibiráomesmoproblema:

Como você pode ver, a metade superior da tela foi atualizada para mostrar linhas de 23 a 44, enquanto a metade inferior não mudou, e ainda mostra linhas começando com 67.

No momento, estou usando o shell zsh , mas o mesmo problema ocorre em bash . Portanto, não é um problema específico do shell.

As variáveis $lines e $columns estão vazias; e a variável TERM está definida como xterm-256color .

Então ... por que isso acontece, e o que posso fazer sobre isso? Obrigado.

    
por Sod Almighty 09.02.2016 / 07:32

1 resposta

1

Portanto, o problema é que você tem TERM=xterm-256color , mas está usando o console do Linux, que não é um terminal compatível com xterm. (E também não suporta 256 cores)

Se você estiver configurando $ TERM no arquivo ~/.bashrc ou semelhante, verifique se conferiu o valor anterior antes de definir o novo. Por exemplo:

case $TERM in
    xterm|screen|tmux|rxvt-unicode)
        TERM="$TERM-256color";;
esac
    
por 09.02.2016 / 08:27