Un de mes flux de travail courants consiste à ouvrir une page de manuel dans un terminal, puis un autre terminal dans lequel tester les choses. La page de manuel est formatée aux dimensions initiales du premier terminal. Lorsque je redimensionne maintenant mes fenêtres (ou que mon WM le fait automatiquement pour moi), il y a soit un espace à droite de la page préformatée, soit des retours à la ligne. À ce stade, j'ai l'habitude de q
(uit) et !!
(exécuter à nouveau), ce qui perd ma position dans la page.
Je suppose que le processus de formatage est assez gourmand en CPU, ou peut-être provient-il des temps anciens de tailles de terminaux fixes. Le less
pager réagit dynamiquement aux événements de redimensionnement terminal, donc cela devrait être possible en théorie.
J'ai essayé de parcourir les pages de manuel, de rechercher sur le Web, de poser des questions sur IRC - le tout - mais je n'ai rien trouvé.
Puis-je déclencher un reformatage depuis l'intérieur ou l'extérieur de l'utilitaire man?
Existe-t-il une version de l'utilitaire man qui redimensionne la page dynamiquement?
Existe-t-il un moyen de personnaliser une partie du processus de formatage / affichage pour la mettre à jour
SIGWINCH
?
man
utilise en faitless
comme pager; vous pouvez appuyerh
sur une page de manuel pour obtenir l'less
écran d'aide. Je ne sais pas pourquoi il ne redimensionne pas dynamiquement les pages de manuelman
rendu correspond à la largeur du terme. Ce dont vous avez besoin, c'est d'un pager qui peut ajouter un signet à l'endroit où vous vous trouvez dans le document, réexécuter man (dont il n'a vraiment aucune idée puisqu'il est redirigé vers lui) et revenir au signet. Alternativement, une nouvelle commande man qui intègre un pager.Réponses:
Le problème de base est que le formatage est effectué par un programme et la pagination est effectuée par un autre. Même si le formateur devait recevoir un signal indiquant que la taille de la fenêtre a changé et reformater le texte pour la nouvelle taille de fenêtre, tout ce qu'il peut faire est de transmettre du nouveau texte dans le pipeline vers le pageur. Le pager n'a aucun moyen de savoir avec certitude quelle position dans le nouveau flux correspond à la position dans l'ancien flux qu'il affichait actuellement.
Ce dont vous avez besoin, c'est que le pager puisse effectuer le reformatage. Comme l'a dit @Robin Green, c'est du HTML.
Si vous souhaitez utiliser HTML mais travaillez toujours dans un terminal, vous pouvez indiquer
man(1)
de sortir en HTML et appeler un navigateur en mode texte pour l'afficher.Cela affichera la
man(1)
page de manuel dans le navigateur en mode texte lynx. Lynx ne répond pas directement aux changements de taille de fenêtre, mais vous pouvez appuyer sur ctrl-R et lynx restituera la page pour la nouvelle taille de fenêtre.Il existe deux autres navigateurs en mode texte que je connais: les liens et les liens. Vous pouvez expérimenter avec ceux-ci et lynx et déterminer ce qui vous donne la meilleure expérience pour parcourir les pages de manuel. Vous pouvez utiliser une configuration personnalisée uniquement pour les pages de manuel et appeler un script qui appelle le navigateur avec cette configuration spécifique.
Vous pouvez mettre les options man que vous aimez dans la
MANOPT
variable d'environnement.Vous devrez installer le
groff
package pourman
pouvoir générer du HTML.la source
-H
argument à l'homme est qu'il n'utilise pas de serveur Web, mais simplement un petit fichier. Bien que cela évite tout problème avec les pare-feu mal configurés, cela ne permet pas de créer des hyperliens vers d'autres pages de manuel (qui prennent en charge au moins certains scripts man-> html tiers).less
n'ont pas d'hyperliens.Convertissez les pages de manuel en html à la volée à l'aide d'un script approprié tel que manserver , en les visualisant dans un navigateur Web (qui peut bien sûr être un navigateur Web textuel comme lynx).
C'est sans doute pourquoi personne n'a résolu ce problème - parce que le problème est devenu hors de propos avec le développement de scripts man-> html.
la source