O recurso parece ser chamado de 'tela alternativa' ou alternar entre a tela normal e a alternativa.
Você pode explorá-lo usando um xterm. Por exemplo, digite man man
um xterm
e saia do homem. Agora você pode alternar para a tela alternativa via Ctrl+ Mouse2 (clique do meio) -> 'Mostrar tela alternativa'. Como alternativa, você pode inserir diretamente as seqüências de controle xterm , por exemplo:
$ echo -e '\033[?47h' # alternate screen
$ echo -e '\033[?47l' # normal screen
Os dois últimos comandos também funcionam no terminal gnome (provavelmente em outros também).
O que acontece quando o man
/ vi
/ less
etc. startup é basicamente eles enviam um comando abstrato de tela limpa. Na saída (ou suspensão), eles enviam um comando abstrato restore-screen. Como o comando se traduz em seqüências concretas de controle de terminal é definido no banco de dados terminfo .
Desativar alternância de tela alternativa
O que deve funcionar para todos os terminais é ajustar as entradas locais da terminfo, ou seja, remover o mapeamento de comandos abstratos de tela de limpeza / restauração.
Você pode fazer assim - para a $TERM
entrada atual (para o gnome-terminal no Fedora 19, por exemplo):
$ echo $TERM
xterm-256color
$ infocmp -1 > xterm-256color
$ sed 's/^\(xterm-256color\)|/\1-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 o esperado, você pode configurar TERM
através do seu arquivo rc shell.
Você também pode especificar diretamente o nome do terminal como um parâmetro para infocmp
, por exemplo:
$ infocmp -1 screen > screen
Ativar alternância de tela alternativa
Alguns terminais suportam o recurso de alternância de tela alternativa (por exemplo, tela ), mas desativam-no por padrão .
Para screen
você pode habilitá-lo através do seu ~/.screenrc
:
$ cat ~/.screenrc
altscreen
Se você fizer logon remoto via ssh para, digamos, um sistema Solaris, talvez o banco de dados terminfo de todo o sistema configurado remotamente seja histórico, quebrado ou inclua alguns padrões incomuns / específicos do Solaris que não correspondem aos terminais 'de ponta' você executa o ssh.
Portanto, é 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 tentei com um terminfo-db de uma instalação do Cygwin e copiá-lo diretamente para um sistema Solaris 10 funcionou.
Caso você queira compartilhar um terminfo db alternativo entre usuários, especifique seu caminho através da TERMINFO
variável de ambiente.
Ignorar a sequência de controle
Alguns terminais suportam a desativação da sequência de controle para alternância de tela alternativa. Por exemplo, o xterm tem uma opção, o gnome-terminal não.
Para xterm, é o recurso X , por exemplo
XTerm*titeInhibit: true
Configurações específicas do programa
Alguns programas possuem arquivos de configuração para configurar quais comandos de sequência de controle / terminfo 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
.
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.