O recurso parece ser chamado de 'tela alternativa' ou alternando entre as telas normal e alternativa.
Você pode explorá-lo usando um xterm. Por exemplo, digite man man
em xterm
e exit man. Agora você pode alternar para a tela alternativa via Ctrl + Mouse2 (clique do meio) - > 'Mostrar tela alternativa'. Em alternativa, pode introduzir directamente as sequências de controlo xterm , por exemplo:
$ echo -e '3[?47h' # alternate screen
$ echo -e '3[?47l' # normal screen
Os últimos dois comandos também funcionam no gnome-terminal (provavelmente em outros também).
O que acontece quando a inicialização man
/ vi
/ less
etc. é basicamente eles enviam um comando abstrato de tela clara. Na saída (ou suspensão), eles enviam um comando abstrato da tela de restauração. A forma como o comando se traduz em sequências de controle de terminal de concreto é definida no banco de dados terminfo .
Desativar troca de tela alternativa
O que deve funcionar para todos os terminais é ajustar as entradas locais do terminfo, ou seja, remover o mapeamento de comandos abstratos de limpar / restaurar a tela.
Você pode fazer assim - para a entrada $TERM
atual (para o gnome-terminal no Fedora 19, por exemplo):
$ echo $TERM
xterm-256color
$ infocmp -1 > xterm-256color
$ sed 's/^\(xterm-256color\)|/-na|/ ; /smcup\|rmcup/d ' \
xterm-256color > xterm-256color-na
$ diff -u xterm-256color*
--- xterm-256color 2013-08-04 16:33:52.041393461 +0200
+++ xterm-256color-na 2013-08-04 16:36:56.829930520 +0200
@@ -1,5 +1,5 @@
# Reconstructed via infocmp from file: /usr/share/terminfo/x/xterm-256color
-xterm-256color|xterm with 256 colors,
+xterm-256color-na|xterm with 256 colors,
am,
bce,
ccc,
@@ -155,7 +155,6 @@
rin=\E[%p1%dT,
rmacs=\E(B,
rmam=\E[?7l,
- rmcup=\E[?1049l,
rmir=\E[4l,
rmkx=\E[?1l\E>,
rmm=\E[?1034l,
@@ -170,7 +169,6 @@
sgr0=\E(B\E[m,
smacs=\E(0,
smam=\E[?7h,
- smcup=\E[?1049h,
smir=\E[4h,
smkx=\E[?1h\E=,
smm=\E[?1034h,
$ tic xterm-256color-na # loads the file to $HOME/.terminfo
$ find ~/.terminfo -type f
$ HOME/.terminfo/x/xterm-256color-na
Agora você pode testá-lo via:
$ TERM=xterm-256color-na man man # and then hit q
Você pode repetir as etapas acima para outros terminais se usar vários. Se tudo funcionar como esperado, você pode definir TERM
via seu arquivo rc do shell.
Você também pode especificar diretamente o nome do terminal como um parâmetro para infocmp
, por exemplo:
$ infocmp -1 screen > screen
Ativar troca de tela alternativa
Alguns terminais suportam o recurso alternativo de alternância de tela (por exemplo, tela ), mas desativá-lo no padrão .
Para screen
, você pode ativá-lo por meio do seu ~/.screenrc
:
$ cat ~/.screenrc
altscreen
Se você fizer login remoto via ssh para - digamos - um sistema Solaris, talvez o banco de dados terminfo do sistema configurado remotamente seja de tipo histórico, quebrado ou inclua alguns padrões incomuns / específicos do Solaris que não correspondam ao 'sangramento' terminais de borda que você executa o ssh.
Assim, é uma opção apenas copiar o banco de dados terminfo local de / usr / share / info (no cliente) para host:~/.terminfo
(no servidor).
Caso o formato terminfo compilado não seja compatível, você também pode exportar / importar as entradas como no parágrafo anterior.
Eu testei com um terminfo-db a partir de uma instalação Cygwin e copiei-o diretamente para um sistema Solaris 10 funcionado.
No caso de você querer compartilhar um db terminográfico alternativo entre usuários, você especifica seu caminho através da variável de ambiente TERMINFO
.
Ignore a sequência de controle
Alguns terminais suportam a desativação da sequência de controle para troca de tela alternativa. Por exemplo, o xterm tem uma opção, o gnome-terminal não tem.
Para o xterm, é o X-ressource , por exemplo
XTerm*titeInhibit: true
Configurações específicas do programa
Alguns programas têm arquivos de configuração para configurar quais comandos de controle / sequência de controle eles enviam. Por exemplo
$ LESS=X less foo
configura less
para não limpar / restaurar a tela.
Para vim
, você pode incluir algo como
set t_ti= t_te=
em você ~/.vimrc
.
Eu não encontrei na opção como configurar esse comportamento para o topo - por padrão, ele não envia a tela de restauração.