必须设"editor.renderWhitespace": "all"才能显示空格(·)和制表符(→),该值必须为字符串"all"而非true或on;同时需关闭"editor.detectIndentation"并设置"editor.insertSpaces"以确保真实字符存在,且要开启"editor.renderControlCharacters": true才可显示换行符¶。

editor.renderWhitespace 设成 "all" 才能显示小圆点·
空格显示为浅灰色小圆点(·)不是默认行为,必须显式开启。关键配置项是 editor.renderWhitespace,它的值必须是字符串 "all" —— 写成 true、on 或 1 都无效。
操作方式有两种:
- 快捷:按
Ctrl + ,(Windows/Linux)或Cmd + ,(macOS),搜索render whitespace,下拉选择All - 手动:在
settings.json里加一行:"editor.renderWhitespace": "all"
设成 "boundary" 时,只在行首/行尾/连续空格边界显示一个点,中间孤立空格不画 ·,容易漏掉混用位置;"selection" 更局限,只对选中区域生效。
为什么设置了却看不到 · 或 →
最常见原因是 VSCode 已经把你的 Tab 键输入转成了空格,编辑器里根本没真实制表符,自然渲染不出 →,连带缩进区域的空格也可能被自动填充掩盖,导致 · 不明显。
检查右下角状态栏:
- 显示
Spaces: 4→ 当前文件锁定为空格模式,按 Tab 插入的是 4 个空格,不是\t - 显示
Tab Size: 4→ 真实 Tab 存在,→ 才可能被渲染
验证方法:按 Ctrl + Shift + P → 输入 Convert Indentation to Tabs 执行,再按一次 Tab,看是否出现 →;或者用正则搜索 \t 确认是否存在。
要让 · 和 → 稳定出现,得关掉自动探测
editor.renderWhitespace: "all" 只负责“画出来”,但画什么取决于底层有没有真实空白字符。VSCode 默认开启 editor.detectIndentation,它会读取文件前几行,自动决定用空格还是 Tab,并悄悄转换后续输入。
想让显示和输入一致,必须配对设置:
-
"editor.detectIndentation": false—— 禁止自动推断 -
"editor.insertSpaces": true(统一用空格)或false(统一用 Tab)—— 明确输入行为 -
"editor.tabSize": 2或4—— 控制缩进宽度,配合insertSpaces生效
注意:工作区级 .vscode/settings.json 会覆盖用户级设置,且可能被提交到 Git —— 如果团队项目里缩进混乱,优先检查这个文件。
换行符 ¶ 怎么一起显示出来
editor.renderWhitespace: "all" 不管换行符,它只处理空格和制表符。要看到 ¶(LF)或 ↵(CRLF),必须额外开启:
"editor.renderControlCharacters": true
这两个配置缺一不可:renderWhitespace 负责 · 和 →,renderControlCharacters 负责 ¶ 和 ↵。组合起来对排查 .gitattributes 换行问题、YAML 行尾冒号后空格、或跨平台 diff 异常特别有用。
真正容易被忽略的是:主题可能影响 · 的颜色深浅,但无法自定义形状;想靠颜色区分空格和 Tab?VSCode 原生不支持,别折腾 workbench.colorCustomizations,那个配置项已废弃。


















