Reformatar dinamicamente as páginas do manual nas mudanças de dimensão do terminal

11

Um fluxo de trabalho comum é abrir uma página de manual em um terminal e, em seguida, outro terminal para testar as coisas. A página man é formatada para as dimensões iniciais do primeiro terminal. Agora, quando eu redimensiono minhas janelas (ou faço com que meu WM faça isso automaticamente), há uma lacuna à direita da página pré-formatada ou quebra de linhas. Neste ponto eu geralmente q (uit) e !! (corro novamente), o que perde a minha posição na página.

Eu assumo que o processo de formatação é bastante intensivo da CPU, ou talvez ele tenha origem em tempos antigos de tamanhos fixos de terminais. O pager less reage dinamicamente aos eventos de redimensionamento do terminal, portanto, isso deve ser possível na teoria.

Eu tentei folhear man pages, pesquisar na Web, perguntar no IRC - o lote inteiro - mas não consegui pensar em nada.

  • Posso disparar a reformatação de dentro ou fora do utilitário man?

  • Existe uma versão do utilitário man que redimensiona a página dinamicamente?

  • Existe uma maneira de personalizar alguma parte do processo de formatação / exibição para atualizá-lo em SIGWINCH ?

por peth 15.04.2011 / 16:20

2 respostas

9

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 mudou e reformate o texto para o novo tamanho da janela, tudo o que ele pode fazer é inserir um novo texto no pipeline para o pager. Não há como o pager saber com certeza qual posição no novo stream corresponde à posição no stream antigo que estava exibindo no momento.

O que você precisa é que o pager consiga fazer a reformatação. Como @Robin Green disse, isso é HTML.

Se você quiser usar HTML, mas ainda trabalhar em um terminal, poderá informar man(1) a saída em HTML e chamar um navegador em modo texto para exibi-lo.

man -Hlynx man

Isso exibirá a% man_de% manpage no navegador do modo de texto 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 dois outros navegadores de modo de texto que eu conheço: links e elinks. Você pode experimentar com esses e lynx e determinar quais oferecem a melhor experiência para navegar em páginas do manual. Você pode querer usar uma configuração personalizada apenas para man pages e invocar um script que invoque o navegador com essa configuração específica.

Você pode colocar as opções man que você gosta na variável de ambiente man(1) .

$ export MANOPT=-Hlynx
$ export MANOPT=-Hmanlynx # manlynx invokes lynx with a different configuration.

Você precisará instalar o pacote MANOPT para groff para gerar HTML.

    
por 16.04.2011 / 00:56
4

Converta rapidamente as páginas de manual em html usando um script adequado, como manserver , visualizando-os em um navegador da Web (que pode ser um navegador da Web baseado em texto como o lynx).

Isto é presumivelmente porque ninguém resolveu este problema - porque o problema tornou-se irrelevante com o desenvolvimento de scripts man-html.

    
por 15.04.2011 / 20:00

Tags