sublime text 的 default_line_ending 仅影响 ctrl+n 新建文件,需在 settings – user 中设为 "unix"(非 "lf");语法专属设置(如 .py)优先级更高;右下角切换需手动保存才生效;git 换行符问题须配合 .gitattributes 解决。

default_line_ending 配置只在 Settings – User 里管新建文件
Sublime Text 的 default_line_ending 不会自动统一所有文件,它只影响你按 Ctrl+N 新建的空白文件。Windows 上默认是 CRLF,想改成 LF,必须手动写对位置和值。
- 打开
Preferences → Settings – User,在右侧 JSON 中添加:"default_line_ending": "unix" - 值只能是小写字符串:
"unix"(LF)、"windows"(CRLF)、"system"(不推荐) - 别写
"lf"或"crlf"——Sublime 完全忽略,也不报错,静默退回到系统默认 - 改完后按
Ctrl+N新建一个空文件,右下角应立刻显示Unix;如果还是Windows,说明配置没生效或被覆盖
真正控制 .py/.js/.json 默认换行符的是语法专属设置
你打开一个已存在的 .py 文件,它用什么换行符,跟 Settings – User 里的 default_line_ending 没关系。要让所有新打开的 .py 文件默认就是 LF,必须用语法专属设置。
- 打开任意一个
.py文件 →Preferences → Settings – Syntax Specific - 在右侧 JSON 中添加:
"default_line_ending": "unix" - 同理,为
.js、.json单独配一次;但别给.env或.md强设,它们可能依赖系统原生行为 - 这个设置优先级高于全局
Settings – User,但会被项目根目录下的.editorconfig覆盖(如果里面写了end_of_line = crlf)
点了右下角的 LF 不保存,换行符根本没变
点击右下角状态栏的 CRLF 或 LF 只是切换当前文件内存中的视图,不是自动写入磁盘。这是最常踩的坑。
- 点完“Convert to Unix line endings”后,必须立刻按
Ctrl+S(Windows/Linux)或Cmd+S(macOS)才真正写入LF - 如果没保存就关文件,下次打开还是原来的换行符
- 批量处理多个已打开文件:先
Ctrl+Click多个标签页 →Ctrl+Shift+P→ 输入Convert Line Endings to LF→ 回车 → 再Ctrl+Shift+P→Save All
Git 还在报 CRLF 警告?那问题不在 Sublime
即使 Sublime 保存的是 LF,Git 仍可能在检出时偷偷转成 CRLF——这是 core.autocrlf 和 .gitattributes 在起作用。
- 检查当前配置:
git config core.autocrlf;Windows 默认是true,会强制检出为CRLF - 项目根目录加
.gitattributes文件,内容写:* text=auto eol=lf - 执行
git add --renormalize .让 Git 重走一遍换行符规则 - 最容易被忽略的一点:
default_line_ending只管编辑器这一端;跨平台协作必须配合.gitattributes才算闭环











