我的一个常见工作流程是在终端中打开手册页,然后在另一个终端中进行测试。手册页被格式化为第一个终端的初始尺寸。当我现在调整我的窗口大小(或让我的 WM 自动为我做这件事)时,预格式化页面右侧有一个间隙,或者换行。在这一点上我通常q
(uit) 和!!
(再次运行),这失去了我在页面中的位置。
我认为格式化过程非常占用 CPU,或者它可能源于固定终端大小的古代。该less
寻呼机动态反应终端的resize事件,所以应该在理论上是可能的。
我试着仔细阅读手册页,搜索网络,在 IRC 上询问——很多——但什么也想不出来。
我可以从 man 实用程序内部或外部触发重新格式化吗?
是否有动态调整页面大小的 man 实用程序版本?
有没有办法自定义格式化/显示过程的某些部分以使其更新SIGWINCH
?
cam*_*amh 13
基本问题是格式化由一个程序完成而分页由另一个程序完成。即使格式化程序要获得窗口大小已更改的信号并重新格式化文本以适应新的窗口大小,它所能做的也就是将新文本沿管道馈送到寻呼机。寻呼机无法确定新流中的哪个位置对应于它当前显示的旧流中的位置。
您需要的是寻呼机能够进行重新格式化。正如@Robin Green 所说,那是 HTML。
如果你想使用 HTML 但仍然在终端中工作,你可以告诉man(1)
以 HTML 输出并调用文本模式浏览器来显示它。
man -Hlynx man
Run Code Online (Sandbox Code Playgroud)
这将man(1)
在 lynx 文本模式浏览器中显示联机帮助页。Lynx 不会直接响应窗口大小的变化,但您可以按 ctrl-R,lynx 将根据新的窗口大小重新渲染页面。
我知道还有另外两种文本模式浏览器:links 和 elinks。您可以对这些和 lynx 进行试验,并确定哪个可以为您提供浏览手册页的最佳体验。您可能只想为手册页使用自定义配置,并调用一个脚本来调用具有该特定配置的浏览器。
您可以将您喜欢的 man 选项放入MANOPT
环境变量中。
$ export MANOPT=-Hlynx
$ export MANOPT=-Hmanlynx # provide your own wrapper to execute
# lynx with a different configuration.
Run Code Online (Sandbox Code Playgroud)
您需要安装该groff
软件包man
才能生成 HTML。
使用合适的脚本(例如manserver)将手册页即时转换为 html ,并在 Web 浏览器(当然可以是基于文本的 Web 浏览器,如 lynx)中查看它们。
这大概就是为什么没有人解决这个问题的原因——因为这个问题与 man->html 脚本的开发无关。