VSCode 只识别系统注册的字体而非硬盘中的 .ttf 文件,需按系统规范安装字体并严格匹配注册名;连字功能须显式启用 editor.fontLigatures 和 terminal.integrated.fontLigatures 为 true,且完全重启 VSCode 才生效。

字体没装进系统,VSCode 就根本看不见
VSCode 不读你硬盘里下载的 .ttf 文件,只认操作系统注册表里的字体名。哪怕你把 FiraCode-Regular.ttf 放在桌面,settings.json 里写得再准,它也会静默 fallback 到 Consolas 或 Courier New。
- Windows:解压后全选所有
FiraCode-Regular.ttf、FiraCode-Bold.ttf、FiraCode-Light.ttf(别漏掉带Ligatures后缀的),右键 → “为所有用户安装” - macOS:双击每个
.ttf→ “安装字体”,然后打开“字体册”,左侧选“资料库”,确认字体状态为“已启用”;右键字体 → “显示简介”,复制“全名”字段(比如FiraCode-Retina,不是文件名) - Linux:把
.ttf放进~/.local/share/fonts/(不是~/.fonts/,后者已过时),终端执行fc-cache -fv,再用fc-list | grep -i fira验证是否列出
装完先别开 VSCode —— 打开记事本(Windows)或 TextEdit(macOS),在字体列表里搜到并选中该字体,输入 => 看是否自动变成 ⇒。这是连字支持最直接的验证方式。
settings.json 里 fontFamily 写错一个空格就失效
editor.fontFamily 的值必须和系统注册名完全一致,含空格或连字符都得加单引号,GUI 设置框会吃掉引号或自动补全错误,强烈建议直接改 JSON。
- Windows 用户通常填
'Fira Code';若无效,试试'FiraCode-Regular'(部分系统注册名不含空格) - macOS 用户务必用“字体册”里复制的“全名”,比如
'FiraCode-Retina',别手敲 - 中英文混排必须加中文字体兜底,否则中文注释基线偏移、模糊:
'Fira Code', 'Noto Sans CJK SC', 'Microsoft YaHei', monospace' - 多个字体用英文逗号分隔,每个带空格/特殊字符的字体名都得加单引号,别写成
"'Fira Code'"(双引号套单引号)
改完后,用 Ctrl+Shift+P(macOS 是 Cmd+Shift+P)打开命令面板,输入 Developer: Toggle Developer Tools,在 Console 里执行 getComputedStyle(document.body).fontFamily,返回值里必须包含你设的字体名,否则配置压根没生效。
连字开关 editor.fontLigatures 必须显式设为 true
只配 editor.fontFamily 不够,只装字体也不够——VSCode 默认关闭连字,必须显式启用且完全退出进程才生效。
- 配置项是
editor.fontLigatures,值必须是布尔型true,不是字符串"true" - 拼写不能错:
fontLigatures(不是fontLigature或ligatures) - 某些主题(如 High Contrast Black)会强制禁用连字,换回
Default Dark+或One Dark Pro再试 - 终端(Integrated Terminal)的连字是独立开关,需额外配
terminal.integrated.fontLigatures,和编辑器互不影响
配置完一定要完全退出 VSCode(macOS 上要关掉 Dock 图标,Windows 上任务管理器里确认 Code.exe 进程已结束),再重开,否则连字不会触发。
终端字体和编辑器字体是两套配置
很多人以为配了 editor.fontFamily 终端就自动跟着变,其实终端字体由 terminal.integrated.fontFamily 单独控制,连字也要单独开。
- 终端字体推荐用
FiraCode Nerd Font Mono(支持更多图标),安装方式同 Fira Code,但配置项是terminal.integrated.fontFamily - 终端连字开关是
terminal.integrated.fontLigatures,默认false,必须手动设为true - 如果终端里
=>不变⇒,先确认该配置项已启用,再检查终端是否用了正确字体名(比如 macOS 上可能要填'FiraCode-Retina')
编辑器和终端的字体名、连字开关、备选字体都要分别配,而且各自重启才生效——这点最容易被忽略。











