Динамічне переформатування довідкових сторінок щодо зміни розміру терміналу


14

Один із загальних моїх робочих процесів - це відкрити сторінку вручну в терміналі, а потім інший термінал, на якому потрібно перевірити речі. Сторінка man відформатована до початкових розмірів першого терміналу. Коли я змінюю розмір свого вікна (або WM робить це для мене автоматично), є прапор праворуч від попередньо відформатованої сторінки або загортання рядків. У цей момент я зазвичай q(uit) і !!(запускаю ще раз), що втрачає своє місце на сторінці.

Я припускаю, що процес форматування досить інтенсивний процесор, або, можливо, він пов'язаний з давніх часів фіксованих розмірів терміналів. lessПейджер динамічно реагує на кінцеве зміна розміру, так що це повинно бути можливо в теорії.

Я спробував ознайомитись із довідковими сторінками, пошукати в Інтернеті, запитав у IRC - цілий ряд - але нічого не міг придумати.

  • Чи можу я запустити переформатування зсередини або поза утилітою людини?

  • Чи є версія утиліти man, яка динамічно змінює сторінку?

  • Чи є спосіб налаштувати якусь частину процесу форматування / відображення, щоб оновити оновлення SIGWINCH?


manнасправді використовує lessяк пейджер; ви можете потрапити hна сторінку lessдовідки, щоб отримати екран довідки. Я не впевнений, чому це динамічно не змінює розмір сторінок людини
Michael Mrozek

3
Проблема виглядає в тому, що manвиводить вихід на ширину терміна. Вам потрібен пейджер, який може зробити закладку там, де ви знаходитесь в документі, заново виконати людину (про яку вона насправді не має уявлення з моменту передачі) і повернутися до закладок. Крім того, команда new man, яка включає в себе пейджер.
nix

Відповіді:


11

Основна проблема полягає в тому, що форматування виконується однією програмою, а підкачка виконується іншою. Навіть якщо форматник повинен отримати сигнал про те, що розмір вікна змінився і переформатувати текст для нового розміру вікна, все, що він може зробити, - це подати новий текст вниз по трубопроводі до пейджера. Немає способу пейджер з впевненістю дізнатися, яка позиція в новому потоці відповідає позиції в старому потоці, який він наразі відображав.

Вам потрібно, щоб пейджер міг зробити переформатування. Як сказав @Robin Green, це HTML.

Якщо ви хочете використовувати HTML, але все ще працюєте в терміналі, ви можете man(1)запропонувати вивести в HTML і зателефонувати в текстовий режим браузера для його відображення.

man -Hlynx man

Це відобразить сторінку man(1)в текстовому режимі браузера в текстовому режимі. Lynx не відповідає безпосередньо на зміни розміру вікна, але ви можете натиснути ctrl-R, і lynx перетворить сторінку на новий розмір вікна.

Є два інших браузери в текстовому режимі, про які я знаю: посилання та посилання. Ви можете поекспериментувати з ними та рисом та визначити, що дає вам найкращий досвід для перегляду сторінок чоловіка. Ви можете скористатись власною конфігурацією лише для підручних сторінок і застосувати сценарій, який викликає браузер із цією конкретною конфігурацією.

Ви можете помістити параметри людини, які вам подобаються, у MANOPTзмінну оточення.

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

Вам потрібно буде встановити groffпакет, manщоб мати можливість генерувати HTML.


Обмеження -Hаргументу до людини полягає в тому, що він використовує не веб-сервер, а просто невеликий файл. Хоча це дозволяє уникнути будь-яких проблем із неправильно налаштованими брандмауерами, воно не дозволяє генерувати гіперпосилання на інші підручні сторінки (які підтримують принаймні деякі сторонні man-> html-скрипти).
Робін Грін

1
@Robin Green: Питання полягає у підтримці довідкових сторінок у багаторазових термінальних вікнах. У цьому контексті невикористання веб-сервера не є обмеженням. І відсутність гіперпосилань не є обмеженням, оскільки сторінки, що відображаються less, не мають гіперпосилань.
camh

Це правда, це, безумовно, правильна відповідь.
Робін Грін

4

Перетворіть підручні сторінки в html на льоту, використовуючи відповідний сценарій, такий як manserver , переглядаючи їх у веб-браузері (що, звичайно, може бути текстовим веб-браузером, як рись).

Імовірно, чому ніхто не вирішив цю проблему - тому що ця проблема стала неактуальною з розвитком man-> html-скриптів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.