要显示换行符符号,必须同时启用"draw_white_space":"all"和"show_line_endings":true;前者预留空白字符位置,后者才是绘制¶/↵的开关,二者需同级配置于用户设置中。

Sublime Text 默认不显示换行符符号(如 ¶、↵),哪怕你开了“显示隐藏字符”菜单项也没用——那只是临时渲染空格和 Tab,跟换行符完全无关。真要让每行末尾画出符号,必须同时启用两个独立配置项,缺一不可。
为什么 draw_white_space: "all" 单独不起作用
draw_white_space: "all" 只负责为所有空白字符预留渲染位置:空格变 ·,Tab 变 →,但它**不决定换行符画不画**。很多人配完发现还是看不到 ¶ 或 ↵,就是卡在这一步。
- 它只是“打地基”,没“盖房”;真正触发符号绘制的是另一个开关
- 值必须是字符串
"all",写成true、on或漏英文双引号都会导致整段 JSON 解析失败,且静默失效 - 只改 Settings – Default 无效,必须写进 Settings – User 右侧的用户配置里
show_line_endings: true 是换行符可见的关键
show_line_endings: true 才是那个“点火开关”:它告诉 Sublime 在每行末尾实际画出符号——¶ 表示 CRLF(Windows),↵ 表示 LF(Unix),⌍ 表示旧 Mac 的 CR。
- 这个配置和
draw_white_space是并列关系,不是子属性,不能嵌套 - 必须和
"draw_white_space":"all"写在同一级 JSON 对象里,例如:{"draw_white_space":"all","show_line_endings": true} - 它不影响状态栏的 LF/CRLF 显示逻辑,但符号位置和状态栏标识严格同步——看到
¶就说明状态栏写的一定是 CRLF
右下角状态栏不显示 LF/CRLF?先看这几点
状态栏那个小小的 LF 或 CRLF 是 Sublime 实际解析文件后得出的结果,不是“默认常驻”。它不出现,往往意味着解析受阻:
- 新创建未保存的
untitled文件不会显示,必须先Ctrl+S保存为真实路径 - 文件末尾缺换行符(
no newline at end of file)时,推断不稳定;保存一次再重开常能触发识别 - 某些插件(如旧版
BracketHighlighter)会抢占状态栏右侧区域,临时禁用可验证是否冲突 - 编码异常(如 UTF-16、带 BOM 的混合编码)会让换行符检测逻辑降级,状态栏主动隐藏该标识——此时建议先转成 UTF-8 再试
保存时自动补换行符:用 ensure_newline_at_eof_on_save
光看见换行符不够,很多场景(比如 Shell 脚本、CI 构建、POSIX 工具链)要求文件**必须以换行符结尾**。Sublime 提供了直接生效的配置:
- 在用户设置中加一行:
"ensure_newline_at_eof_on_save": true - 开启后,每次保存都会检查末尾:没有就自动补一个(按当前文件的换行格式,不是强制 LF)
- 配合
"draw_white_space":"all"和"show_line_endings": true,你能实时看到补上的那个↵或¶ - 注意:它不改变已有行的换行符类型,只管最后一行末尾;混用 LF/CRLF 的文件,它只补最后一个换行符,不会统一全文件
最常被忽略的是:符号显示依赖字体渲染精度和字号。如果 ↵ 看起来模糊或错位,优先调大 font_size(比如设为 14),比换主题或配色方案见效更快。


















