我正在寻找一个选项,当渲染的 HTML 行达到一定长度(例如 72 个字符)时,w3m 会换行。默认情况下,文本会覆盖整个窗口宽度,阅读起来很困难。以下是全屏 w3m 中文章的默认显示截图:
在 newsbeuter 中,我能够使用 轻松获得我想要的行为text-width 72
。同一篇文章的文本在 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 和 less 进行格式化页面浏览
请注意,页面的前半部分在指定的列宽内很好地包裹住了。上面的截图是浏览这篇文章时显示的:维基百科上的 w3m。
评论:该-dump
选项将在生成格式化页面时将超链接全部删除。如果列宽是您所需的唯一标准,则此选项就足够了。除此之外,我不知道还有其他方法可以保留超链接。
答案2
您可以通过 简单地更改终端的列数stty
,例如,stty cols 72
然后运行w3m <url>
。这就是我有时所做的。
然而,这样做有两个问题:
即使您使用别名
w3m
,stty cols 72 && w3m
如果您不希望行宽保持在 72 列,您仍必须在浏览会话后重置行宽。不过,这可以通过一个小包装脚本自动完成。当您在 X 终端中时,
stty
只要您调整窗口大小,该设置就会失效。(我已经在 xterm 和 urxvt 中测试过这一点。)
答案3
您可以使用“read shell”命令(默认 @ 键)即时设置宽度stty colls number
。它将打开一个新的缓冲区,但您可以返回,页面将以新的宽度呈现。