Como eu ainda posso ver o texto do 'homem' depois que eu parei o homem?

14

Eu normalmente uso tcsh ou bash e muitas vezes quero usar 'man' para rever as opções de um comando. Atualmente, quando eu paro man ou ctrl-C, o texto man desaparece e vejo o buffer de rolagem que estava lá antes de executar o comando 'man'. Eu ainda gostaria de ver o texto "man" que eu estava vendo como uma referência enquanto estou digitando o comando no prompt de comando sem abrindo uma segunda janela, como posso fazer isso?

    
por Sol 30.04.2010 / 00:35

5 respostas

13

Esse comportamento vem do recurso de “tela alternativa” incluído em alguns terminais (hardware) e na maioria dos emuladores de terminal (software). O que acontece é que alguns programas com reconhecimento de terminal mudam para a "tela" alternativa para fazer seu trabalho e voltar para a "tela" normal quando são dispensados (sair, suspenso, etc.). Isso efetivamente limpa a saída final de tais programas.

Uma pesquisa na web para "terminfo prevent altscreen", fornecida uma página que discute a tela alternativa 'problema' e várias soluções .

Como essa página vinculada descreve, alguns programas podem ser configurados para evitar o uso da tela alternativa. A opção -X para menos é uma maneira indireta de fazer isso. O Vim pode ser configurado de maneira semelhante desativando as variáveis t_ti e t_te .

Uma solução com um escopo mais amplo é editar a entrada terminfo do seu terminal, para que ela não inclua a alternativa seqüências de controle de tela. As entradas terminfo formam um banco de dados que informa aos programas que controlam as sequências a serem enviadas para um terminal para criar certos efeitos (mover o cursor, limpar a tela, apagar parte da linha atual, etc.). Ao editar a entrada terminfo que o seu terminal usa, você pode organizar a "negligência de informar" todos os programas que usam terminologias que as seqüências de controle da "tela alternativa" existem.

A partir da lista de sequências de controlo para xterm , podemos ver que as sequências de controle de interesse (para xterm como emuladores de terminal) são

  • ativar tela alternativa: ESC [ ? 47 h (da mesma forma para 1047 e 1049) e
  • restaura a tela normal: ESC [ ? 47 l (da mesma forma para 1047 e 1049).

Esses códigos provavelmente estão presentes nas variáveis de terminfo smcup e rmcup . Uma forma rápida e suja de extirpar essas variáveis para o seu TERM atual pode ser assim:

infocmp | sed -e 's/[sr]mcup=[^,]*,//' > /tmp/noaltscreen-terminfo
tic -o ~/.terminfo/ /tmp/noaltscreen-terminfo

Este método é bastante grosseiro e certamente não funcionará para todos os terminais, mas provavelmente funcionará para a maioria dos emuladores de terminal do tipo xterm . Idealmente, você deve investigar os valores nas variáveis smcup e rmcup da entrada terminfo do seu terminal e, de maneira conservadora, editá-los para evitar o comportamento indesejado. A página de discussão / solução com links acima tem um arquivo terminfo “pré-preparado” que você pode usar em vez de hackeá-los (mas qual é a graça disso?).

    
por 30.04.2010 / 02:58
9

Você precisa definir $MANPAGER para /usr/bin/less -isX , substituindo o caminho em que less é encontrado, conforme necessário. A parte importante é o -X ; o -is é o conjunto padrão passado para menos.

    
por 30.04.2010 / 00:39
8

Supondo que seu pager é less , defina a variável de ambiente LESS para incluir "X". Por exemplo, o meu é:

LESS="-iMFXRj4a"

Você pode definir isso no seu arquivo ~/.bashrc

export LESS="-X"

e inclua qualquer outra opção que você tenha ou adicione aquelas que você gosta.

    
por 30.04.2010 / 00:42
3

Outro truque - menos elegante que as outras respostas - é:

man what | more

(Pelo menos, isso funciona no MacOS X, que geralmente é similar o suficiente para ser válido.)

    
por 30.04.2010 / 01:07
1

homem que | mais

Isso funciona bem (Fedora).

    
por 03.05.2010 / 07:18