Dependendo do terminal / ambiente, a sequência a seguir tem efeitos diferentes:
$ ls
1
2
$ man ls
enter q
Ou vejo a última tela da página de manual exibida acima do prompt atual ou a saída ls e a saída anterior do shell são restauradas. O mesmo efeito é observado, por exemplo, ao usar vim
e depois suspendê-lo para fazer algo no shell.
No Fedora 19 - o padrão da tela parece ser sem restauração, um gnome-terminal / xterm usa o do-restore por padrão.
No Solaris, isso depende do terminal / terminfo db usado.
Desejo configurar o comportamento da restauração de forma consistente entre diferentes sistemas / terminais.
Respostas:
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
umxterm
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: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):Agora você pode testá-lo via:
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: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
: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
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
configura
less
para não limpar / restaurar a tela.Para
vim
você pode incluir algo comoem 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.
fonte
smcup
ourmcup
. No meu caso, existem outros itens na mesma linha que eles. Esses outros itens também foram excluídos. Então, talvez algo comos/[sr]mcup=[^,]*,//'
seja melhor.