w3m
w3m 是一个基于文本的网页浏览器,以及像 more 或 less 这样的分页器。 通过 w3m,您可以通过终端模拟器窗口浏览网页。 此外,w3m 可以用作文本格式化工具,将 HTML 排版为纯文本。
安装
用法
参见 w3m(1)。
配置
w3m 可以使用浏览器内设置菜单进行配置,也可以直接修改其配置文件。
一些更高级的选项无法通过设置菜单使用,因此建议编辑配置文件本身。
默认情况下,所有配置文件都位于 ~/.w3m
中。
/etc/w3m/config
未公开,因此使用 o
(= 选项设置面板), tab
键直到选中一个未选中的设置 (例如 ( )YES
), Enter
键选择它, tab
键向下到 [OK]
并按下 Enter
键离开面板。 现在您将拥有 ~/.w3m/config
。
技巧和窍门
Vim 快捷键绑定
将 ~/.w3m/keymap
替换为 自定义配置。
URL 提示
w3m 支持类似 qutebrowser 的链接导航,只需导航到您的配置文件并将以下行从 display_link_number 0
更改为 display_link_number 1
。
并将 keymap f COMMAND "RESHAPE ; LINK_BEGIN ; GOTO_LINK"
和 keymap F COMMAND "RESHAPE ; LINK_BEGIN ; TAB_LINK"
添加到 ~/.w3m/keymap
。
使用 kittens 图像协议
kitty 终端模拟器的用户可以选择使用其自身的 图形协议。
要这样做,只需更改 ~/.w3m/config
中的以下行
inline_img_protocol 0 imgdisplay w3mimgdisplay
改为
inline_img_protocol 4 imgdisplay kitty
使用 Iterm2 图像协议
wezterm 终端模拟器的用户可以选择使用 WezTerm 支持的 Iterm2 图形协议。
要这样做,只需更改 ~/.w3m/config
中的以下行
inline_img_protocol 0 imgdisplay w3mimgdisplay
改为
inline_img_protocol 3 imgdisplay iterm2
搜索
您可以将 wrap_search
设置为 1,以允许搜索在到达页面内所有匹配项的底部后跳转到顶部。
您可以将 ignorecase_search
设置为 1 以启用不区分大小写的搜索。
自定义搜索引擎
您可以映射按键以启动 CGI 脚本,该脚本将捕获您的输入并将其传递到自定义搜索引擎,要这样做,首先在 ~/.w3m/keymap
中创建一个按键绑定以启动您的脚本
keymap s COMMAND "SET_OPTION dictcommand=file:///cgi-bin/omnibar_google.cgi ; DICT_WORD"
并将 omnibar_google.cgi 放在您的 ~/.w3m/cgi-bin
目录中,并赋予它执行权限。
虽然上面的脚本将返回 Google 结果,但您可以使用这些类型的脚本来搜索 StackOverflow、GitHub、DuckDuckGo、Reddit 和许多其他网站。
您可以在 GitHub 上查看类似的脚本。
阅读器模式
某些网页在 w3m 中无法正常工作,这可能是因为它们使用大量 javascript 或 CSS 来显示其大部分内容。 通常,您必须滚动多个页面才能到达文章的开头。
可以通过首先将网页通过阅读器模式程序(例如 rdrview-gitAUR)来缓解这种情况。
要这样做,请将以下内容添加到 ~/.w3m/keymap
keymap R COMMAND "READ_SHELL 'rdrview $W3M_URL -H 2> /dev/null 1> /tmp/readable.html' ; LOAD /tmp/readable.html"
重定向 URL
~/.w3m/siteconf
文件用于设置一些特定于网站的首选项,例如:引用站点和用户代理。
它还可以用于重定向到更轻量级(在布局和带宽方面)且更尊重隐私的网站替代方案。
除此之外,它还可以用于运行某些 CGI 脚本。
~/.w3m/siteconf
url m!^https?://([a-z]+\.)?twitter\.com/! substitute_url "https://nitter.net/" url m!^https?://([a-z]+\.)?reddit\.com/! substitute_url "https://safereddit.com/" #url m!^https?://([a-z]+\.)?google\.com/! #substitute_url "https://duckduckgo.com/lite/" url m!^https?://([a-z]+\.)?imgur\.com/! substitute_url "https://rimgo.pussthecat.org/" url m!^https?://([a-z]+\.)?wikipedia\.com/! substitute_url "https://wl.vern.cc/" url "https://www.youtube.com/" exact substitute_url "file:/cgi-bin/video.cgi?" #substitute_url "https://yewtu.be/" url "https://stackoverflow.com/" exact substitute_url "https://ao.bloatcat.tk/" url "https://www.reuters.com/" exact substitute_url "https://neuters.de/" url "https://fandom.com/" exact substitute_url "https://breezewiki.pussthecat.org/" url "https://medium.com/" exact substitute_url "https://scribe.rip/" url "https://web.archive.org/" exact substitute_url "https://wayback-classic.net/"
恢复已关闭窗口
默认 w3m 无法重新打开已关闭的选项卡,这可以通过将关闭选项卡按钮绑定到将要关闭的选项卡的当前 URL 回显到一个文本文件,并绑定另一个键来使用 CGI 脚本恢复添加到该文件的最新 URL 来添加此功能。
在 ~/.w3m/keymap
中添加
keymap d COMMAND "EXTERN 'echo %s >> ~/.w3m/RestoreTab.txt' ; CLOSE_TAB" keymap u COMMAND TAB_GOTO file:/cgi-bin/restore_tab.cgi
然后将以下文件放在 ~/.w3m/cgi-bin
中并使其成为可执行文件。
打开 magnet 链接
magnet.cgi 可用于使 w3m 使用 Transmission 自动打开 magnet 链接。
指纹识别
使用 tor
您可以使用 torify(1) 通过 tor 路由 w3m 流量。
$ torify w3m -v
用户代理和标头
默认情况下,w3m 使用自己的用户代理,这意味着 w3m 用户在其他用户中脱颖而出。
通过使用更通用的用户代理、语言和 http_accept 标头可以减少指纹。
~/.w3m/config
user_agent Mozilla/5.0 (Windows NO 10.0; rev:91.0) Gecko/20100101 Firefox91.0 no_referer 1 cross_origin_referer 0 accept_language en-US,en;q=0.5 accept_encoding gzip, deflate accept_media text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
禁用 Cookie
要禁用 Cookie,请在 ~/.w3m/config
中将 use_cookie
设置为 0。
禁用缓存
要禁用缓存,请在 ~/.w3m/config
中将 no_cache
设置为 1。
故障排除
图像闪烁/导致卡顿
不幸的是,有时 w3m 在尝试滚动经过图像时会卡顿,甚至浏览器可能会在几秒钟内无响应。
一种解决方案是完全禁用图像,但这会破坏某些网站(例如,Hacker News 依赖 GIF 来进行评论缩进)。
更优雅的解决方案是创建一个按键绑定来切换图像的开启或关闭,要这样做,请将以下行添加到 ~/.w3m/keymap
keymap i COMMAND "SET_OPTION display_image=toggle ; RESHAPE"