editor.lineheight必须设整数像素值(如24)才稳定,单位是逻辑像素,设24.5会被截断为24;默认0启用自动计算但结果不可控,等宽字体推荐22~28,超28在高dpi屏易跳帧,低于20则descender易贴行。

editor.lineHeight 必须设整数像素值才稳定
行高不是倍数,也不是自动推算的“看起来差不多”,editor.lineHeight 的单位是逻辑像素,设成 24 就是 24 像素,设成 24.5 会被截断为 24,视觉毫无变化。默认值 0 表示启用自动计算,但结果高度依赖字体 ascender/descender、DPI 和系统缩放,同一份配置在不同机器上可能差出 3px —— 日常开发中几乎不可控。
等宽字体下推荐值范围:22~28。常见搭配有:
- 字号
14→ 行高24 - 字号
15→ 行高26 - 字号
16或用了 Nerd Fonts → 行高28
超过 28 在高 DPI 屏(如 4K / Retina)上滚动易出现跳帧;低于 20 则等宽字体 descender(如「下」「长」字底部钩)容易贴到下一行。
editor.letterSpacing 改完不生效?先关 editor.fontLigatures
editor.letterSpacing 是字符间水平增量,不是字体 kerning,效果强依赖等宽字体本身。设了没反应,大概率卡在这几个点:
- 开了
editor.fontLigatures: true:Fira Code、Cascadia Code 等连字字体开启后,渲染基线会偏移,直接干扰字符间距计算,关掉立刻见效 - 值太小或字体不响应:在
Fira Code下0.3明显,在Segoe UI下几乎看不出;0是默认无额外间距 - 改完不刷新:必须执行
Developer: Reload Window(Ctrl+Shift+P 输入后回车),否则编辑器缓存样式不会更新 - 被工作区设置覆盖:项目根目录有
.vscode/settings.json且写了"editor.letterSpacing": 0,那全局设成0.5也无效
别指望一个配置管全局面
editor.lineHeight 只影响编辑器主区域,终端、文件树、大纲视图完全不受它控制:
- 集成终端行高:用
terminal.integrated.lineHeight(只接受小数倍数,如1.2),填24无效;改完需关闭再打开终端面板 - 文件资源管理器缩进:靠
workbench.tree.indent(单位像素,推荐18~20),默认8太紧凑,中文路径下尤其糊 - 语言专属行高:比如 Markdown 预览太密,加
"[markdown]": { "editor.lineHeight": 30 },优先级高于全局
这些配置项之间没有继承关系,也不能用 CSS 覆盖 —— VSCode 不支持通过 line-height CSS 属性调整编辑器行距。
settings.json 是唯一可靠入口
GUI 设置界面(Ctrl+,)只是 settings.json 的可视化封装,某些场景下根本写不到正确作用域,尤其是多工作区、远程开发或插件干扰时。最稳做法是手动编辑:
- 按 Ctrl+Shift+P(Win/Linux)或 Cmd+Shift+P(macOS),输入
Preferences: Open Settings (JSON)回车 - 在花括号内添加(注意逗号分隔和引号格式):
"editor.lineHeight": 24,<br>"editor.letterSpacing": 0.3,<br>"editor.fontLigatures": false,
- 已有同名键就直接改数值,不要重复写;保存后所有已打开窗口立即响应
真正容易被忽略的是:行高和字间距不是“越大越舒服”,而是要匹配当前字体的度量数据。JetBrains Mono 的 ascender 比 Fira Code 高,同样设 24,前者可能刚好,后者可能略紧 —— 没有银弹值,得结合字体实测。











