Один из моих общих рабочих процессов заключается в открытии страницы руководства в терминале, а затем в другом терминале для проверки. Страница man отформатирована до начальных размеров первого терминала. Когда я теперь изменяю размеры своих окон (или мой WM делает это для меня автоматически), появляется либо пробел справа от предварительно отформатированной страницы, либо перенос строк. В этот момент я обычно q
(uit) и !!
(снова запускаю), который теряет мою позицию на странице.
Я предполагаю, что процесс форматирования является довольно интенсивным процессором, или, возможно, это происходит с древних времен фиксированных размеров терминала less
Пейджер динамически реагирует на оконечное изменение размера, так что это должно быть возможно в теории.
Я пытался просматривать страницы справочника, искать в Интернете, задавать вопросы по IRC - и все такое - но ничего не смог придумать.
Могу ли я инициировать переформатирование изнутри или снаружи утилиты man?
Существует ли версия утилиты man, которая динамически изменяет размер страницы?
Есть ли способ настроить некоторую часть процесса форматирования / отображения, чтобы он обновлялся
SIGWINCH
?
man
фактически используетless
как пейджер; Вы можете нажатьh
на страницеless
справки, чтобы получить экран справки. Я не уверен, почему он не меняет размер страницыman
что вывод выводится в ширину термина. То, что вам нужно, это пейджер, который может пометить, где вы находитесь в документе, повторно выполнить man (о котором он на самом деле не имеет представления, так как он передан в него) и вернуться к закладке. Кроме того, новая команда man, которая включает в себя пейджер.Ответы:
Основная проблема заключается в том, что форматирование выполняется одной программой, а подкачка страниц - другой. Даже если средство форматирования получит сигнал об изменении размера окна и переформатирует текст для нового размера окна, все, что он может сделать, это передать новый текст по конвейеру на пейджер. Пейджер не может точно знать, какая позиция в новом потоке соответствует позиции в старом потоке, который он отображал в данный момент.
Вам нужно, чтобы пейджер мог переформатировать. Как сказал @Robin Green, это HTML.
Если вы хотите использовать HTML, но все еще работаете в терминале, вы можете указать
man(1)
вывод в HTML и вызвать браузер в текстовом режиме, чтобы отобразить его.Это отобразит
man(1)
man-страницу в браузере текстового режима Lynx. Lynx напрямую не реагирует на изменения размера окна, но вы можете нажать ctrl-R, и lynx повторно отобразит страницу для нового размера окна.Есть два других браузера в текстовом режиме, о которых я знаю: ссылки и ссылки. Вы можете поэкспериментировать с теми и Lynx и определить, какие из них дают вам наилучший опыт для просмотра страниц man. Возможно, вы захотите использовать пользовательскую конфигурацию только для справочных страниц и вызвать скрипт, который вызывает браузер с этой конкретной конфигурацией.
Вы можете поместить понравившиеся опции man в
MANOPT
переменную окружения.Вам нужно будет установить
groff
пакет,man
чтобы иметь возможность генерировать HTML.источник
-H
аргумента для человека заключается в том, что он не использует веб-сервер, а просто небольшой файл. Хотя это позволяет избежать проблем с неправильно настроенными межсетевыми экранами, оно не позволяет создавать гиперссылки на другие страницы руководства (которые поддерживают по крайней мере некоторые сторонние сценарии man-> html).less
не имеют гиперссылок.Конвертируйте man-страницы в html на лету, используя подходящий скрипт, такой как manserver , просматривая их в веб-браузере (который, конечно, может быть текстовым веб-браузером, таким как lynx).
Вероятно, именно поэтому никто не решил эту проблему - потому что проблема стала неактуальной с развитием сценариев man-> html.
источник