Windows终端图片支持启用与验证方法(VS Code预览版)
我注意到VS Code最近新增了Sixel(以及我不熟悉的iTerm图片)支持,对此很开心,但官方说明表述模糊。因为调试Sixel的成本不低,不想在不支持的环境里反复尝试。
官方设置项Terminal > Integrated: Enable Images的说明如下:
启用终端图片支持,该功能仅在‘Terminal > Integrated: Gpu Acceleration’启用时生效。Linux和macOS支持sixel与iTerm内嵌图片协议,当ConPTY传递相关序列时,Windows端支持将自动启用。当前窗口重载/重连后图片无法恢复。
针对上述说明,以下是相关问题的解答:
疑问解答
“支持自动启用”具体指什么?
当Windows系统下的终端通过ConPTY通道传递Sixel或iTerm图片协议序列时,VS Code内置终端会自动触发图片渲染支持——前提是Terminal > Integrated: Gpu Acceleration已经开启。不需要手动额外配置Windows端的专属开关,只要ConPTY能把图片协议内容传过来,VS Code就会自动识别并渲染图片。Windows Terminal会话是否属于ConPTY实例,无论默认设置如何?
是的。Windows Terminal从设计之初就基于ConPTY构建,不管用默认配置还是自定义了终端外观、快捷键等设置,它的核心会话通信都是依赖ConPTY实现的。所以只要在VS Code里选用Windows Terminal作为终端,它就会通过ConPTY传递相关协议。该功能是否仅能在CygWin bash中生效?
当然不是。只要是Windows下基于ConPTY运行的终端环境,都能触发这个图片渲染功能,比如:- Windows自带的Command Prompt(CMD)
- PowerShell(含PowerShell 7及以上版本)
- WSL(Windows子系统Linux)中的各类发行版(Ubuntu、Debian等)
- Git Bash
只要这些环境能输出Sixel或iTerm图片协议序列,VS Code内置终端就能自动识别并渲染。
本质上,哪些终端实现了ConPTY?
ConPTY是微软为Windows推出的伪控制台API,目前Windows平台上的主流现代终端基本都基于它实现,包括:- Windows Terminal(官方默认终端)
- VS Code内置终端(Windows环境下)
- Alacritty(Windows版本)
- WezTerm(Windows版本)
- Tabby(原Terminus,Windows版本)
传统终端如ConEmu在开启特定设置后也可支持ConPTY,但默认状态下可能未启用。而Linux和macOS平台的终端不依赖ConPTY,它们有各自的伪终端实现机制。
内容的提问来源于stack exchange,提问作者majitsu

