必须同时设editor.renderWhitespace:"all"和editor.renderControlCharacters:true,否则符号显示残缺;看不到→常因editor.detectIndentation自动将Tab转为空格,需关闭该选项并设editor.insertSpaces:false才能确保制表符真实存在并被渲染。

必须同时设 editor.renderWhitespace 为 "all" 且 editor.renderControlCharacters 为 true,否则你看到的永远是残缺的符号——比如有 · 没 →,或有 → 没 ¶。
为什么开了 editor.renderWhitespace 却看不到 →
不是设置没生效,而是编辑器里压根没有制表符:editor.detectIndentation 默认开启,它会扫描文件前几行,自动把后续所有 Tab 键转成空格(即 editor.insertSpaces: true)。此时你按 Tab 插入的是 4 个 ,不是 \t,自然渲染不出 →。
- 右下角状态栏显示
Spaces: 4?说明当前文件已锁定为空格模式 - 验证方法:按
Ctrl + Shift + P→ 输入Convert Indentation to Tabs执行,再按一次 Tab,看是否出现 → - 要让 → 真实存在,必须配对关闭自动探测:
"editor.detectIndentation": false,并明确设"editor.insertSpaces": false
editor.renderWhitespace 的值怎么选
它只接受字符串,true 或 "true" 会静默失效甚至报错。四个合法值用途差异明显:
-
"all":每个空格变·,每个\t变→,行尾空白、缩进层级全显形——适合查 YAML/JSON 缩进、Git diff 对齐、排查混用 -
"boundary":只在行首、行尾、连续空格边界画一个·;视觉干净,但漏掉中间孤立空格和缩进细节 -
"selection":仅在你选中的文本内显示空白符;临时确认某段有没有隐藏空格可用,日常编码基本不用 -
"none":彻底关闭;纯阅读长日志时可选
换行符 ¶ 和回车符 ↵ 怎么一起显示
editor.renderWhitespace: "all" 不管换行符——它只负责空格和制表符。\n、\r 这类控制字符的显示,由独立开关 editor.renderControlCharacters 控制。
- 必须显式设
"editor.renderControlCharacters": true,否则 ¶ 和 ↵ 始终透明 - 二者缺一不可:
renderWhitespace是“画什么”,renderControlCharacters是“允许画” - 这个组合对调试
.gitattributes换行策略、跨平台文件差异特别关键
工作区设置可能悄悄覆盖你的配置
你在用户级 settings.json 里写好了全部配置,但项目根目录下的 .vscode/settings.json 优先级更高——它可能写了 "editor.renderWhitespace": "none",或者在 "[python]" 块里单独关掉了渲染。
- 检查路径:
.vscode/settings.json→ 查找是否有冲突项 - 语言专属设置也可能覆盖:按
Ctrl + Shift + P→ 输入Preferences: Configure Language Specific Settings→ 查当前语言块 - 别把
renderWhitespace或renderControlCharacters提交到 Git;它们是纯本地偏好,不该影响团队其他成员的编辑体验
真正卡住人的从来不是怎么开显示,而是你盯着 · 和 → 看了半天,结果发现那些符号压根没被插入过——编辑器早把 Tab 吞掉转成空格了,连“画皮”的机会都不给。


















