直接设editor.renderWhitespace为"selection"即可只在选中区域显示空格(·)和制表符(→),它不渲染全文,仅高亮当前选中文本里的空白字符,适合快速验证局部缩进污染或隐藏空格。

怎么让 VSCode 只在选中区域显示空格和制表符
直接设 editor.renderWhitespace 为 "selection" 即可。它不渲染全文,只高亮当前选中文本里的空白字符——比如你圈住一段 YAML 或 JSON,里面混着空格、制表符、行尾空格,全会立刻以 · 和 → 显形。
为什么选 "selection" 而不是 "all" 或 "boundary"
"selection" 是唯一按需触发的模式,适合快速验证某段代码是否藏有隐藏空格或缩进污染:
-
"all"会全局渲染,大文件里满屏·容易干扰阅读,且对性能有轻微影响 -
"boundary"仍作用于整行(行首/行尾/连续空格边界),无法聚焦到你真正怀疑的那一小块 -
"selection"不依赖文件语言模式或缩进设置,只要选中了,就立刻生效
"selection" 模式下看不到 → 或 ¶ 怎么办
不是模式问题,是底层字符根本不存在或未启用控制字符渲染:
- 按
Ctrl + Shift + P→ 输入Convert Indentation to Tabs执行一次,再选中按 Tab,看是否出现→;若无,说明当前文件已锁定为insertSpaces: true - 确保同时开了
editor.renderControlCharacters: true,否则换行符¶永远不会显示 - 检查右下角状态栏:显示
Spaces: 4就意味着你选中的区域里压根没\t,只有空格
容易被忽略的关键点
"selection" 是临时视觉辅助,它不改变任何输入行为或保存逻辑。你关掉选择,符号就消失;你改了缩进设置,它也不会自动重绘。真正决定“有没有制表符”的,永远是 editor.insertSpaces 和 editor.detectIndentation 的组合——"selection" 只负责把已存在的空白字符画出来,不负责生成它们。


















