跳到主要内容
ansicode

OSC 8 — 内联超链接

在终端输出中渲染可点击超链接(gnome-terminal 3.26+、iTerm2、Windows Terminal、kitty 等)。

字节形式

涵盖所有常见的字符串字面量写法,方便正反查找。

\\x1b[\x1b]8;;URI\x07TEXT\x1b]8;;\x07
\\033[\033]8;;URI\007TEXT\033]8;;\007
\\e[\e]8;;URI\aTEXT\e]8;;\a
ESC [ESC ] 8 ; ; URI BEL TEXT ESC ] 8 ; ; BEL
hex1b 5d 38 3b 3b ... 07 ... 1b 5d 38 3b 3b 07

说明

由 gnome-terminal 在 2017 年制定,现已被广泛采纳。两段式序列:`OSC 8 ; params ; URI BEL` 开始链接区段,`OSC 8 ; ; BEL`(URI 为空)结束。中间 TEXT 可包含任意可打印字符及后续 SGR。可选参数:`id=anchor` 让终端将跨行链接去重。普通 HTTP/HTTPS 链接全平台可用;`file://` 在 iTerm2 / wezterm / kitty / vscode-terminal 可用;`vscode://` 等编辑器 URI 部分支持。

规范出处: Hyperlinks in terminal emulators (gnome-terminal proposal, 2017)

示例

bash
printf '\033]8;;https://example.com\033\\link text\033]8;;\033\\\n'
python
print('\x1b]8;;https://example.com\x07link text\x1b]8;;\x07')
go
fmt.Print("\x1b]8;;https://example.com\x07link text\x1b]8;;\x07\n")
javascript
console.log('\x1b]8;;https://example.com\x07link text\x1b]8;;\x07')
c
printf("\x1b]8;;https://example.com\x07link text\x1b]8;;\x07\n");

终端支持

xterm
部分
Linux console (fbcon)
不支持
macOS Terminal.app
不支持
iTerm2
支持
Windows Terminal
支持
cmd.exe / ConPTY
不支持
kitty
支持
alacritty
不支持
WezTerm
支持
Ghostty
支持
GNOME Terminal
支持
Konsole
支持
tmux
不支持
GNU screen
不支持

相关序列

在家族食谱中

OSC 食谱 · 3. OSC 8 超链接 —— `\x1b]8;;URI\x07TEXT\x1b]8;;\x07`