Um fluxo de trabalho comum é abrir uma página de manual em um terminal e depois outro terminal para testar as coisas. A página do manual é formatada para as dimensões iniciais do primeiro terminal. Quando agora redimensiono minhas janelas (ou meu WM faz isso automaticamente), há um espaço à direita da página pré-formatada ou quebra de linhas. Neste ponto, normalmente q
(uit) e !!
(corro novamente), o que perde minha posição na página.
Suponho que o processo de formatação consome bastante CPU, ou talvez provenha de tempos antigos de tamanhos de terminais fixos. O less
pager reage dinamicamente a eventos de redimensionamento de terminais, portanto deve ser possível em teoria.
Tentei ler as páginas de manual, pesquisar na Web, perguntar no IRC - o lote todo -, mas não consegui pensar em nada.
Posso disparar a reformatação de dentro ou de fora do utilitário man?
Existe uma versão do utilitário man que redimensiona a página dinamicamente?
Existe uma maneira de personalizar parte do processo de formatação / exibição para atualizá-lo
SIGWINCH
?
man
realmente usaless
como pager; você pode clicarh
em uma página de manual para obter aless
tela de ajuda. Não sei por que ele não redimensiona dinamicamente as páginas de manual.man
renderiza a saída para a largura do termo. O que você precisa é de um pager que possa marcar onde você está no documento, reexecutar o man (sobre o qual ele realmente não tem idéia, pois está direcionado a ele) e retornar ao marcador. Como alternativa, um novo comando man que incorpora um pager.Respostas:
O problema básico é que a formatação é feita por um programa e a paginação é feita por outro. Mesmo que o formatador receba um sinal de que o tamanho da janela foi alterado e reformate o texto para o novo tamanho da janela, tudo o que você pode fazer é alimentar o novo texto no pipeline para o pager. Não há como o pager saber com certeza qual posição no novo fluxo corresponde à posição no fluxo antigo que estava exibindo no momento.
O que você precisa é que o pager seja capaz de reformatar. Como o @Robin Green disse, isso é HTML.
Se você deseja usar HTML, mas ainda trabalha em um terminal, pode dizer
man(1)
para enviar em HTML e chamar um navegador em modo de texto para exibi-lo.Isso exibirá a página de
man(1)
manual no navegador de modo de texto do lynx. O Lynx não responde diretamente às alterações no tamanho da janela, mas você pode pressionar ctrl-R e o lynx renderizará novamente a página para o novo tamanho da janela.Existem outros dois navegadores em modo de texto que conheço: links e elinks. Você pode experimentar esses e o lynx e determinar qual é a melhor experiência para navegar nas páginas de manual. Você pode usar uma configuração personalizada apenas para páginas de manual e chamar um script que chama o navegador com essa configuração específica.
Você pode colocar as opções de homem que desejar na
MANOPT
variável de ambiente.Você precisará instalar o
groff
pacote paraman
poder gerar HTML.fonte
-H
argumento para o homem é que ele não usa um servidor da Web, mas simplesmente um arquivo pequeno. Embora isso evite problemas com firewalls mal configurados, ele não permite a geração de hiperlinks para outras páginas do manual (que pelo menos alguns scripts de manual do homem-> html suportam).less
não possuem hiperlinks.Converta as páginas de manual em html em tempo real usando um script adequado, como manserver , visualizando-as em um navegador da web (que pode ser um navegador da Web baseado em texto, como o lynx).
Provavelmente, é por isso que ninguém resolveu esse problema - porque o problema se tornou irrelevante com o desenvolvimento de scripts man-> html.
fonte