vscode终端连字不依赖fontligatures开关,需远程系统安装匹配字体并正确配置terminal.integrated.fontfamily,且term值需为xterm-256color等兼容值。

VSCode 终端(Integrated Terminal)本身不支持 editor.fontLigatures 这类连字开关,所谓“终端连字”实际是字体渲染引擎在终端模拟器层面自动应用 OpenType liga 特性——它只在特定条件下生效,且不能像编辑器那样手动开启/关闭。
terminal.integrated.fontFamily 配置必须和系统字体名严丝合缝
终端字体配置完全独立于编辑器,editor.fontFamily 对它零影响。填错一个空格、少一个连字符、大小写不符,VSCode 就静默 fallback 到 monospace(通常是 Courier New 或 DejaVu Sans Mono),而这些字体根本不含连字表。
- Windows 用户直接试
"Fira Code"或"JetBrains Mono";若无效,用 PowerShell 查:Get-Font | Where-Object {$_.FontName -like "*Fira*"} | Format-List - macOS 用户打开「字体册」→ 搜索 Fira Code → 右键「显示简介」→ 复制「全名」字段(常见为
FiraCode-Retina,不是Fira Code Retina) - Linux 用户执行:
fc-list | grep -i "fira\|jetbrains" | cut -d: -f2,输出的才是系统认的真名 - 多个字体必须用英文逗号分隔,每个带空格/连字符的字体名都要加单引号:
"'FiraCode-Retina', 'JetBrains Mono', monospace"
终端连字是否生效,取决于远程环境而非本地 VSCode
你在本地 settings.json 里写 "terminal.integrated.fontFamily": "Fira Code",只是给终端发了个“建议”。真正决定用什么字体的,是终端进程运行的那套系统。
- Remote-SSH / WSL 场景下:本地装了 Fira Code 没用,必须在远程 Linux 或 Windows Subsystem for Linux 里也安装该字体,并运行
fc-cache -fv(Linux)或确认C:\Windows\Fonts存在(WSL2 的 Windows 端) - macOS 本地终端:需确保终端使用的 shell(如 zsh)未被
TERM变量干扰,运行echo $TERM,理想值是xterm-256color;若为screen或linux,连字可能被禁用 - 字体必须是 OpenType 格式(.otf)或带完整 GPOS/GSUB 表的 TrueType(.ttf),某些精简版 Nerd Fonts 删除了
liga特性,查 GitHub README 确认是否含 ligature 支持
字符重叠、光标错位?先关 GPU 加速再调行高
连字没出现,但终端文字糊成一团、退格跳行、光标悬在字母中间——这几乎肯定不是字体或连字问题,而是渲染层故障。
- 强制关闭硬件加速:
"terminal.integrated.gpuAcceleration": "off",改完必须关闭所有终端页签,再新开一个才生效 - 行高过低会挤压连字垂直空间,尤其 Cascadia Code PL 或 JetBrainsMonoNL:
"terminal.integrated.lineHeight": 1.3是较稳起点 - 字母间距异常可微调:
"terminal.integrated.letterSpacing": 0.2(范围 -0.5 ~ 1.0,负值慎用) - 别信“重启窗口”就够——VSCode 的终端进程常驻内存,必须彻底退出进程(macOS
Cmd+Q,Windows 任务栏右键→“退出”)
最易被忽略的一点:终端连字没有“开关”,它要么随字体自动启用(当终端模拟器支持且字体含特性表),要么彻底不出现。你无法像编辑器那样用 editor.fontLigatures 控制它,也不能在设置里看到“已启用连字”的提示。验证唯一方式是输入 =>、!=、==> 后观察是否合并渲染——如果没变,优先查远程字体安装状态和 TERM 值,而不是反复改 VSCode 配置。











