必须同时配置editor.fontfamily和editor.fontsize才能确保代码区字体正确显示;仅改字号会沿用系统默认等宽字体,仅改字体则沿用默认字号,二者缺一不可。

editor.fontFamily 和 editor.fontSize 必须一起配,单改一个没用
只调 editor.fontSize 会让字号变大,但字体还是默认的 Consolas(Windows)或 SF Mono(macOS),等宽性、连字支持、字符间距都不可控;只改 editor.fontFamily 而不设字号,VSCode 会沿用默认值(通常是 12 或 14),可能过小或过大。二者必须成对出现,才构成完整排版基础。
实操建议:
-
editor.fontFamily填法要严格:含空格/连字符的字体名必须用英文单引号包裹,多个字体用英文逗号分隔,末尾不加顿号,例如:"'Fira Code', 'Cascadia Code', 'monospace'" -
editor.fontSize只接受整数,14.5会静默失效,回退到默认值 - macOS 用户别直接写
Fira Code,得去「字体册」右键字体 →「显示简介」→ 复制「全名」字段(可能是FiraCode-Retina) - Windows 用户装完字体后不用重启系统,但 VSCode 必须完全退出再重开,否则新字体不进进程缓存
连字(ligatures)开了却没反应?先确认三件事
开了 editor.fontLigatures 却看不到 != 或 => 合并,不是配置错,而是底层条件没满足。VSCode 不生成连字,它只是启用字体里已有的 OpenType 特性。
实操建议:
- 确认字体本身支持编程连字:查 GitHub README,关键词搜
ligature;避开带NL(No Ligatures)后缀的变体,比如JetBrainsMonoNL - VSCode 版本需 ≥ 1.84,旧版本对
==>、!==等复杂连字支持不全 - 某些字体(如部分 Cascadia Code 定制版)需显式启用 OpenType 特性,在 settings.json 加:
"editor.fontLigatures": "'calt' on, 'liga' on"(仅限支持 OpenType 的字体) - 改完必须重载窗口(
Ctrl+Shift+P→Developer: Reload Window),热保存不触发字形表重加载
终端字体和编辑器字体是两套独立配置,不能共用
很多人改完 editor.fontFamily 发现底部终端还是模糊小字,是因为终端用的是 terminal.integrated.fontFamily 和 terminal.integrated.fontSize,和编辑器配置完全无关。它们甚至不共享 fallback 逻辑。
实操建议:
- 终端对等宽要求更苛刻:某些“伪等宽”中文字体(如部分
Noto Sans CJK SC变体)在终端里会导致光标错位、竖线不齐,优先选纯编程字体如Fira Code或Cascadia Code - 想统一显示,就让两个配置项填一样的值,但注意终端不支持连字渲染(即使开了
editor.fontLigatures,终端里也不会合并符号) - 改完
terminal.integrated.fontSize后,必须新建一个终端页签(Ctrl+Shift+`),旧终端不会重绘 - Linux 用户若终端字体乱码,先运行
fc-list | grep -i fira确认字体已注册,再执行fc-cache -fv刷新缓存
远程开发(SSH / Dev Container)下字体必须装在远程系统
你在本地 VSCode 里把 editor.fontFamily 改成 'JetBrains Mono',但连接到 Linux 服务器后还是显示 DejaVu Sans Mono——因为 VSCode 渲染发生在远程端,字体也必须装在远程机器上。
实操建议:
- SSH 连接后,在远程终端执行
fc-list | grep -i jetbrains,确认字体存在;不存在就手动安装(Ubuntu/Debian:sudo apt install fonts-jetbrains-mono;或下载 .ttf 手动复制到~/.local/share/fonts/后运行fc-cache -fv) - Dev Container 场景下,字体要写进
Dockerfile或devcontainer.json的features里,不能靠本地同步 - 检查右下角状态栏是否显示
Remote: SSH或Dev Container,有则说明当前生效的是远程设置,Preferences: Open Settings (JSON)打开的也是远程端的配置文件 - 别信“字体同步插件”,VSCode 没有跨系统字体传输机制,所有字体路径都是本地解析











