终端里打印出来的网址可以直接点,不管打印它的程序有没有特意标记。Term 会先让你看清目标,然后在应用内打开。
需要 Term v26.1.6 或更高版本。
撰写于
点屏幕上任意一个网址,Term 会先问一句,并把即将打开的完整地址显示出来。你同意之前,不会发出任何请求。
这一步不是为了增加操作。屏幕上的文字来自远端,而一个你并不完全信任的远端可以打印任何东西 —— 所以唯一值得保证的,就是你看到的是真正的目标地址,在请求发出之前。
see https://docs.github.com/en ok,对话框里恰好只有网址。周围的词不属于链接 —— 见最后一节。终端程序可以把文字标记成链接(那个转义序列叫 OSC 8),标记了的话,Term 打开的是它声明的目标 —— 那可能和你看到的文字不一样。但几乎没有程序这么做:echo 出来的、编译器报错里的、git remote、从别处粘进来的,都只是普通字符。这些 Term 也能认出来。
包括网址太长、折到下一行的情况。点其中任意一半,打开的都是完整地址。
tar. 之后断开,对话框里是完整的。链接在 Term 自带的浏览器里打开,而不是把你交给别的应用 —— 这是为了你的会话,不是为了留住你。离开 Term 会让它进入后台,而后台应用保住 SSH 会话的时间远不到一分钟。看一个网页,不该让你丢掉正在用的 shell。
顶栏会写明你在哪个站点。我们自己的页面显示 const.net 并带一个蓝色印记;其他站点显示完整主机名,含子域名 —— 因为那才是告诉你真正在跟谁打交道的部分。右侧按钮可以随时把页面交给系统浏览器。
很多链接其实是文件 —— 发布包、.deb、PDF。Term 没有地方存放它们,所以与其打开一个永远不出现的页面,不如把下载交给系统浏览器(它有下载管理器),然后自己退开。
判断依据是服务器怎么说,而不是从地址猜 —— 只有这样才判断得准:下面这个发布包,路径中间含 tar.gz,结尾什么也没有;而很多普通网页反而以看着像文件的后缀结尾。
例外是通过端口转发打开的页面,它只在应用内存在 —— 别的浏览器根本加载不了。这种情况下 Term 会告诉你这是个下载,并留在原处,而不是把一个注定悄悄失败的地址交出去。
网址周围那句话的标点不属于它。地址后面的句号会被留下;括号只有在它的左半边也在地址里时才保留 —— 所以 (https://x.dev/a) 打开的是网址,而 https://x.dev/a(b) 会带着自己的括号。
另外,光是一个主机名不算链接:www.example.com 或 example.com 点了没反应。这是刻意的。文字里到处都是点号,而点开错误的东西比点了没反应更糟 —— 凡是能复制粘贴的网址,本来就带着 https://。