Como o "homem" restaura a tela quando eu saio do programa?

18

Se eu abrir uma página de manual de um programa como catou ls, ela imprime (pode não ser a palavra apropriada) o conteúdo da página de manual e, quando pressiono q, mostra a tela como antes de chamar o mancomando. Como a restauração acontece? O que apaga tudo e depois imprime o conteúdo anterior do shell?

Exemplo:

[VAR121@Tesla Testing]$  man ls

Resultado:

LS(1)                                                        User Commands                                                        LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

 ............

Quando pressiono q, a tela volta à aparência padrão dos projéteis, como o prompt mostrado abaixo.

[VAR121@Tesla Testing]$  man ls
[VAR121@Tesla Testing]$

Como a tela é restaurada?

VAR121
fonte

Respostas:

19

"Compensação" e "restaurar" a tela é realmente uma função do emulador de terminal que você está usando ( xterm, gnome-terminal, konsole, screen).

Por padrão, o pager que manusa é less.

A partir de man 1 man

   -P  pager
          Specify  which pager to use.  This option overrides the 
          MANPAGER environment variable, which in turn overrides 
          the PAGER variable.  By default, man  uses /usr/bin/less -is.

Quando lessé chamado, uma tela alternativa é iniciada pelo emulador de terminal para exibir o conteúdo da página de manual. Quando lesssai, a tela alts é destruída e o terminal exibe o que foi salvo no buffer.

Há uma resposta aqui que discute isso mais detalhadamente e como impedir que programas como o lesslançamento de uma tela alternativa e, assim, limpem a tela quando ela sai. Em poucas palavras, você pode definir uma variável de ambiente para que lessnão ative uma tela alts na chamada. Se você estiver usando o bash, coloque-o em ~ / .bashrc:

export MANPAGER="/usr/bin/less -r -X -is"

George M
fonte
1
A mesma história vitambém?
VAR121
3
O vim honra a tela alts no seu emulador de terminal. Você pode adicionar algo assim ao seu ~ / .vimrc - "set t_ti = t_te =" para alterar os recursos do terminal que o vim usa.
George M