Reformatear dinámicamente páginas de manual en cambios de dimensión de terminal


14

Un flujo de trabajo común mío es abrir una página de manual en una terminal, luego otra terminal en la que probar cosas. La página del manual está formateada con las dimensiones iniciales del primer terminal. Cuando ahora cambio el tamaño de mis ventanas (o hago que mi WM lo haga automáticamente), hay un espacio a la derecha de la página preformateada o líneas ajustadas. En este punto, generalmente q(uit) y !!(corro nuevamente), lo que pierde mi posición en la página.

Supongo que el proceso de formateo es bastante intensivo en la CPU, o tal vez se deriva de tiempos antiguos de tamaños de terminales fijos. El lessbuscapersonas reacciona dinámicamente a eventos terminales de cambio de tamaño, por lo que debería ser posible en teoría.

Traté de leer detenidamente las páginas de manual, buscar en la Web, preguntar por IRC, todo, pero no pude encontrar nada.

  • ¿Puedo activar el formateo desde dentro o fuera de la utilidad man?

  • ¿Existe una versión de la utilidad man que redimensione la página dinámicamente?

  • ¿Hay alguna forma de personalizar alguna parte del proceso de formateo / visualización para que se actualice SIGWINCH?


manen realidad se usa lesscomo buscapersonas; puede presionar hen una página de manual para obtener la lesspantalla de ayuda. No estoy seguro de por qué no cambia dinámicamente el tamaño de las páginas de manual
Michael Mrozek

3
El problema parece ser que manrepresenta la salida al ancho del término. Lo que necesita es un buscapersonas que pueda marcar donde se encuentra en el documento, volver a ejecutar man (que realmente no tiene idea ya que está conectado a él) y volver al marcador. Alternativamente, un nuevo comando man que incorpora un buscapersonas.
nix

Respuestas:


11

El problema básico es que el formato lo realiza un programa y la paginación la realiza otro. Incluso si el formateador recibiera una señal de que el tamaño de la ventana ha cambiado y reformatee el texto para el nuevo tamaño de la ventana, todo lo que puede hacer es alimentar el nuevo texto por el canalizador al localizador. No hay forma de que el localizador sepa con certeza qué posición en la nueva secuencia corresponde a la posición en la secuencia anterior que estaba mostrando actualmente.

Lo que necesita es que el localizador pueda hacer el reformateo. Como dijo @Robin Green, eso es HTML.

Si desea usar HTML pero aún funciona en una terminal, puede indicar man(1)que se envíe en HTML y llamar a un navegador en modo de texto para mostrarlo.

man -Hlynx man

Eso mostrará la página de man(1)manual en el navegador de modo de texto Lynx. Lynx no responde directamente a los cambios en el tamaño de la ventana, pero puede presionar ctrl-R y lynx volverá a representar la página para el nuevo tamaño de la ventana.

Hay otros dos navegadores en modo texto que conozco: enlaces y enlaces. Podrías experimentar con esos y Lynx y determinar cuál te brinda la mejor experiencia para navegar por las páginas de manual. Es posible que desee utilizar una configuración personalizada solo para páginas de manual e invocar un script que invoca al navegador con esa configuración específica.

Puede poner las opciones de hombre que desee en la MANOPTvariable de entorno.

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

Deberá instalar el groffpaquete para manpoder generar HTML.


La limitación del -Hargumento al hombre es que no usa un servidor web, sino simplemente un archivo pequeño. Si bien esto evita cualquier problema con los cortafuegos mal configurados, no permite que se generen hipervínculos a otras páginas man (que al menos son compatibles con scripts man-> html de terceros).
Robin Green

1
@Robin Green: la pregunta es sobre el soporte de páginas de manual en ventanas de terminal redimensionables. En ese contexto, no usar un servidor web no es una limitación. Y no tener hipervínculos no es una limitación, ya que las páginas de manual que se muestran lessno tienen hipervínculos.
camh

Eso es cierto, sin duda es una respuesta válida.
Robin Green

4

Convierta las páginas man a html sobre la marcha utilizando un script adecuado como manserver , viéndolas en un navegador web (que, por supuesto, puede ser un navegador web basado en texto como lynx).

Presumiblemente, esta es la razón por la que nadie ha resuelto este problema, porque el problema se volvió irrelevante con el desarrollo de scripts man-> html.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.