Fira Code 在 VSCode 中失效的根本原因是字体未被系统正确注册,而非文件未下载;必须先通过系统字体管理器完成安装(Windows 选“为所有用户安装”、macOS 用“字体册”启用并复制全名、Linux 执行 fc-cache -fv),再在 settings.json 中用单引号准确填写系统注册名(如 'Fira Code' 或 'FiraCode-Retina'),同时设置 "editor.fontLigatures": true 并完全重启 VSCode。

VSCode 用不了 Fira Code,不是字体没下对,而是系统根本没“认”它——编辑器只读操作系统注册表里的字体名,不认你硬盘里躺着的 .ttf 文件。
字体必须先装进系统,VSCode 才能看见
Windows、macOS、Linux 三套安装逻辑完全不同,但核心就一条:让系统字体管理器真正加载进字体表。VSCode 启动时会扫一遍这个表,没出现在里面的字体,哪怕路径写得再准,也会静默 fallback 到 Consolas 或 Courier New。
- Windows:解压后全选所有
FiraCode-Regular.ttf、FiraCode-Bold.ttf、FiraCode-Light.ttf等(别漏掉带Ligatures后缀的),右键 → “为所有用户安装” - macOS:双击每个
.ttf→ “安装字体”,然后打开“字体册”,确认左侧是“资料库”(非“用户”),且字体状态为“已启用”;右键字体 → “显示简介”,复制“全名”字段(比如FiraCode-Retina,不是文件名) - Linux:把
.ttf放进~/.fonts/,终端执行fc-cache -fv,再用fc-list | grep -i fira验证是否列出
装完别急着开 VSCode —— 先打开系统记事本 / TextEdit,输入 =>,看是否自动变成 ⇒。这是连字生效最直接的验证方式。
editor.fontFamily 值写错一个空格就失效
系统注册名 ≠ 文件名 ≠ 你猜的名字。Windows 注册的是 Fira Code(带空格),macOS 可能是 FiraCode-Retina(无空格),而 VSCode 的 GUI 设置框对引号和空格极其敏感,容易吃掉单引号或自动补全错误。
- 推荐直接改
settings.json,避免 GUI 输入框干扰 - Windows 用户优先试:
"'Fira Code', 'Consolas', monospace" - macOS 用户填
"'FiraCode-Retina', 'SF Mono', monospace"(务必用单引号包裹带空格或特殊字符的字体名) - 中英文混排必须加中文字体兜底,否则中文注释基线偏移、模糊:
"'Fira Code', 'Noto Sans CJK SC', 'Microsoft YaHei', monospace"
editor.fontLigatures 必须设为 true,仅配字体名不够
很多人装完字体、配好 editor.fontFamily,却看不到 != 变成 ≠、=== 变成 ≡ —— 根本原因是没开连字开关。VSCode 默认关闭该功能,必须显式启用。
- 在设置中搜
font ligatures,勾选Editor: Font Ligatures - 或在
settings.json中加一行:"editor.fontLigatures": true - 注意:
terminal.integrated.fontFamily和editor.fontFamily是两套独立配置,终端连字也要单独设,且远程开发(如 WSL / Remote-SSH)时,终端字体生效靠的是远程系统是否装了 Fira Code,本地装了没用
连字不是万能的,有些场景它反而会干扰
连字提升可读性,但也会在特定上下文中造成混淆,尤其是字符串字面量、正则表达式或文档注释里。例如:"a=>b" 或 /==>/ 可能被错误连字,导致语法高亮异常或调试困惑。
- VSCode 默认只对代码 token 应用连字,但某些语言扩展(如 Markdown 预览插件)可能误触发,可在对应语言设置中关闭:
"[markdown]": { "editor.fontLigatures": false } - 团队协作时,若他人未启用连字,同一行代码在不同人屏幕上显示不同(比如
!==显示为 ≢ 或原样),可能引发 PR 评审歧义 - 最容易被忽略的一点:连字效果依赖于字体文件是否包含完整的 OpenType
liga和calt特性表 —— 有些精简版或第三方打包的.ttf可能删掉了这些表,连字就是白配


















