Como ainda posso ver o texto 'homem' depois de sair do homem?

16

Normalmente, uso o tcsh ou o bash e geralmente quero usar 'man' para revisar as opções de um comando. Atualmente, quando eu encerro o man ou ctrl-C, o texto do homem desaparece e vejo o buffer de rolagem que existia antes de executar o comando 'man'. Eu ainda gostaria de ver o texto 'man' que estava visualizando como referência enquanto digito o comando no prompt de comando sem abrir uma segunda janela, como posso fazer isso?

Sol
fonte

Respostas:

17

Esse comportamento vem do recurso "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 alternam para a 'tela' alternativa para fazer seu trabalho e retornam para a 'tela' normal quando são descartados (encerrados, suspensos etc.). Isso efetivamente limpa a produção final de tais programas.

Uma pesquisa na web por “terminfo prevent altscreen” forneceu uma página que discute o 'problema' da tela alternativa e várias soluções .

Como a página vinculada descreve, alguns programas podem ser configurados para evitar o uso da tela alternativa. A -Xopção por menos é uma maneira indireta de fazer isso. O Vim pode ser configurado de maneira semelhante, desmarcando as variáveis t_tie t_te.


Uma solução com um escopo mais amplo é editar a entrada terminfo do seu terminal para que ele não inclua as seqüências alternativas de controle de tela. As entradas terminfo formam um banco de dados que informa aos programas que controlam as seqüências a serem enviadas para um terminal para criar certos efeitos (mover o cursor, limpar a tela, apagar parte da linha atual, etc.). Editando a entrada terminfo usada pelo seu terminal, você pode 'negligenciar a dizer' a todos os programas que usam terminfo que as seqüências de controle de “tela alternativa” existem.

A partir da lista de seqüências de controle do xterm , podemos ver que as seqüências de controle de interesse (para emuladores de terminal do tipo xterm ) são

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

Esses códigos provavelmente estão presentes nas variáveis ​​terminfo smcupe rmcup. Uma maneira rápida e suja de consumir 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

Esse método é bastante bruto 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 smcupe rmcupda entrada terminfo do seu terminal e editá-los de forma conservadora para evitar o comportamento indesejado. A página de discussão / solução vinculada acima tem um arquivo terminfo "pré-preparado" que você pode usar em vez de invadir o seu próprio país (mas qual é a graça nisso?).

Chris Johnsen
fonte
10

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

Ignacio Vazquez-Abrams
fonte
9

Supondo que seu pager seja less, configure a variável de ambiente LESSpara incluir "X". Por exemplo, o meu é:

LESS="-iMFXRj4a"

Você pode definir isso no seu ~/.bashrcarquivo

export LESS="-X"

e inclua outras opções que você já possui ou adicione as que você gosta.

Pausado até novo aviso.
fonte
4

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

man what | more

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

Jonathan Leffler
fonte
1

cara o que | Mais

Isso funciona bem (Fedora).

Sumanta
fonte