在 w3m 中折叠/换行长行

在 w3m 中折叠/换行长行

我正在寻找一个选项,当渲染的 HTML 行达到一定长度(例如 72 个字符)时,w3m 会换行。默认情况下,文本会覆盖整个窗口宽度,阅读起来很困难。以下是全屏 w3m 中文章的默认显示截图:

w3m 糟糕的长队

在 newsbeuter 中,我能够使用 轻松获得我想要的行为text-width 72。同一篇文章的文本在 newsbeuter 中被很好地包装起来:

newsbeuter 精美包装的文本

有没有办法在 w3m 中实现这种 72 个字符的换行?

上述观看次数的数据可从以下 URL 获得:

https://www.quirksmode.org/blog/archives/2017/05/why_the_politic.html

答案1

使用相关选项运行w3m以将格式化的页面转储到标准输出,然后将标准输出通过管道传输到less命令。但是,w3m 配置文件中没有这样的选项。

手册页 w3m(1) 提到了以下选项。

   -dump  dump formatted page into stdout

   -cols width
          specify column width (used with -dump)

要将列宽设置为 72,请使用如下选项:

w3m -dump -cols 72 [URL or filename]

由于-dump选项会产生标准输出,因此您无法真正进行正常浏览(w3m 将转储格式化的页面并退出)。使用管道less浏览格式化的页面。

w3m -dump -cols 72 [URL or filename] | less

最后一行命令就是您所需要的。

w3m 正常浏览

使用 w3m 浏览维基百科上的 w3m 文章

使用 w3m 和 less 进行格式化页面浏览

使用带有 dump 选项的 w3m 浏览维基百科上的 w3m 文章并通过管道传输到 less

请注意,页面的前半部分在指定的列宽内很好地包裹住了。上面的截图是浏览这篇文章时显示的:维基百科上的 w3m

评论:该-dump选项将在生成格式化页面时将超链接全部删除。如果列宽是您所需的唯一标准,则此选项就足够了。除此之外,我不知道还有其他方法可以保留超链接。

答案2

您可以通过 简单地更改终端的列数stty,例如,stty cols 72然后运行w3m <url>​​。这就是我有时所做的。

然而,这样做有两个问题:

  1. 即使您使用别名w3mstty cols 72 && w3m如果您不希望行宽保持在 72 列,您仍必须在浏览会话后重置行宽。不过,这可以通过一个小包装脚本自动完成。

  2. 当您在 X 终端中时,stty只要您调整窗口大小,该设置就会失效。(我已经在 xterm 和 urxvt 中测试过这一点。)

答案3

您可以使用“read shell”命令(默认 @ 键)即时设置宽度stty colls number。它将打开一个新的缓冲区,但您可以返回,页面将以新的宽度呈现。

相关内容