Notepad++需手动开启“显示所有字符”(Ctrl+Shift+P或视图→显示符号→显示所有字符)才能看到·(空格)、→(Tab)、¶(行尾符),该设置为文档级,新文件默认不继承;如需全局生效,须修改config.xml中ShowSymbol值为2并重启;SOH、ETX等非打印控制字符无法显示,仅支持有限ASCII控制符可视化。

Notepad++ 默认不显示任何非打印字符,所谓“空白”可能是 \t、\r\n、末尾空格,甚至零宽字符(U+200B)——这些在 Git 提交、JSON 解析、Python 缩进或 XML 导入时都会直接报错。 想靠肉眼判断?不可能。必须显式开启可视化,且得知道哪些能显示、哪些根本不会画出来。
怎么立刻看到 · → ¶ 这些符号
按 Ctrl+Shift+P(不是 Ctrl+Shift+8,旧版快捷键已改),或菜单栏点击 视图 → 显示符号 → 显示所有字符。启用后:
-
·表示空格(普通 ASCII 空格 U+0020) -
→表示\t(制表符 U+0009) -
¶表示行尾:Windows 下对应\r\n,Linux/macOS 下只渲染\n对应的¶
这个开关是文档级的——关掉再打开同一文件,状态保留;但新开文件不会继承。
让所有新文件默认显示隐藏字符
Notepad++ 没有图形界面选项控制全局行为,必须改配置文件:
- 完全退出 Notepad++
- 用管理员权限打开
config.xml(路径通常是C:\Program Files\Notepad++\config.xml或便携版根目录) - 搜索
<guiconfig name="ShowSymbol" value="0"> - 把
value="0"改成value="2"(1只显示行尾符,2才是“所有字符”) - 保存并重启 Notepad++
注意:已打开的旧文件不会自动刷新,需手动切换标签页或右键 → “重新加载”才生效。
为什么 \x01(SOH)、\x03(ETX) 还是看不到
Notepad++ 的「显示所有字符」功能只覆盖有限的 ASCII 控制符:\t、\r、\n、空格、不间断空格(U+00A0)等。像 \x01(SOH)、\x03(ETX)、\x1A(SUB)这类非打印控制字符,它压根不渲染任何图形符号——不是你设置错了,是软件本身不支持。
- 验证是否存在:按
Ctrl+F→ 切换查找模式为「扩展」→ 输入\x01尝试定位 - 真正要分析二进制内容或排查这类字符,得用 Hex-Editor 插件,或换用 VS Code + 「Hex Editor」扩展
- 尤其在 UTF-8 无 BOM 文件中,
\x00或\x01可能被截断或显示为乱码块,仅靠符号显示无法定位
别只盯着显示,缩进混用才是真坑
看到 · 和 → 后,常发现同一文件里空格和制表符混用。Notepad++ 提供原生转换工具,但要注意边界:
-
编辑 → 空白字符转换 → 制表符转为空格:依赖「设置 → 首选项 → 编辑 → 制表符设置」里的大小(如 4),只转当前光标所在行或选区 -
空格转为制表符:只对连续空格数 ≥ 当前制表符大小的段落生效,注释对齐用的空格会被误转 - 真正麻烦的是跨编辑器表现不一致——GitHub 上看着对齐,本地打开却错位。显示只是第一步,后续必须靠
.editorconfig或项目级约定固化规则
最易被忽略的点:UTF-16/UCS-2 编码下,符号可能不渲染;只读文件会让「显示符号」菜单项变灰;字体配色太淡也会导致 · 和 → 看不见——这些都比“没开开关”更隐蔽。



















