Como salvar / restaurar a saída do terminal

5

Alguns programas como o vim / nano / nload têm a capacidade de usar o terminal inteiro para exibir seu conteúdo e ao sair, a saída do terminal anterior é restaurada. Como eles implementam esse processo de restauração?

    
por boh 16.11.2015 / 03:19

1 resposta

4

How do they implement this restoring process?

Eles não. Não é deles para implementar.

Este é o chamado buffer de tela alternativo sendo ligado e desligado. É implementado no terminal (ou no programa emulador de terminal). O terminal responde a seqüências de controle que são emitidas por tais programas TUI. Os programas TUI controlam quando isso acontece, mas a implementação de o que acontece é inteiramente dentro do terminal. De fato, os programas da TUI nem têm o mesmo modelo do que está acontecendo. Para eles, eles estão entrando e saindo do "modo de endereçamento do cursor".

Nem todos os terminais e programas de emulador de terminal têm um buffer de tela alternativo. Por exemplo: os programas de emulador de terminal embutidos nos kernels Linux e BSD que fornecem seus terminais virtuais de kernel geralmente não possuem essa capacidade.

Em tais terminais, não há sequência de controle. O registro do banco de dados termcap / terminfo para o tipo de terminal, portanto, não terá essa seqüência de controle; e alternar para e do "modo de endereçamento do cursor" sobrescreve o conteúdo da tela atual sem salvando e restaurando-o.

vim, nano e outros não têm conhecimento disso . Eles não estão fazendo nada diferente. Eles não são o que executa a função. Eles estão simplesmente emitindo as seqüências de controle que termcap / terminfo lhes dizem que entrarão e sairão do "modo de endereçamento do cursor". Para alguns terminais, que possuem o mecanismo, "modo de endereçamento do cursor" também significa usar o buffer de tela alternativo . Para alguns, isso não acontece, não.

Leitura adicional

por 16.11.2015 / 14:57

Tags