Sublime Text换行符分三层:当前文件真实格式、新建文件默认值、项目级覆盖规则;右下角状态栏显示LF或CRLF即为真实格式,未显示时可用命令面板或HexViewer插件确认;点击右下角可切换当前文件换行符但需手动保存;新建文件默认LF需在Settings–User中设"default_line_ending": "unix";EditorConfig会覆盖该设置;批量转换已打开文件可用Convert Line Endings命令;目录级批量处理应使用dos2unix或PowerShell;Git的core.autocrlf和.gitattributes才是跨平台协作的底层保障。

Sublime Text 里换行符不是靠“设置”一劳永逸的,它分三层:当前文件真实格式、新建文件默认值、项目级覆盖规则。改错地方根本没用。
怎么看当前文件是 LF 还是 CRLF
右下角状态栏显示的就是真实换行符类型——LF 或 CRLF。没显示?说明 Sublime 没识别出差异(比如空文件、全 ASCII 行末无换行)。这时别猜,用命令面板:Ctrl+Shift+P → 输入 Set Line Endings,看高亮项;或者装 HexViewer 插件查末尾字节:0A 是 LF,0D 0A 是 CRLF。
怎么立刻切换单个文件的换行符
点击右下角的 LF 或 CRLF,选 Convert to Unix line endings 或 Convert to Windows line endings。这个操作只改换行符,不碰编码、不重排版。但注意:不会自动保存,必须手动按 Ctrl+S 才写入磁盘。
怎么让新文件默认用 LF(Unix 风格)
打开 Preferences → Settings – User,在右侧 JSON 里加这一行:
"default_line_ending": "unix"
值必须小写、严格匹配:"unix"(LF)、"windows"(CRLF)、"system"(系统默认)。它只影响 Ctrl+N 新建的空白文件,对已打开或拖进来的文件完全无效。
容易踩的坑:
- 装了
EditorConfig插件且项目根目录有.editorconfig文件,里面写了end_of_line = lf,那它会直接覆盖default_line_ending - 改完配置后新建文件仍显示
CRLF,大概率是被.editorconfig或已有文件模板劫持了
批量转换多个已打开文件的换行符
Sublime 原生不支持“选中一堆文件直接转”,但可以这样高效处理:
- 先用
Ctrl+Click多选标签页(或Ctrl+P快速打开多个目标文件) -
Ctrl+Shift+P→ 输入Convert Line Endings to LF(注意大小写,别输成小写convert) - 所有已打开文件都会被修改,但依然要再执行一次
Ctrl+Shift+P→Save All才真正落地
真要处理整个目录(比如 src/ 下所有 .py),别依赖 Sublime —— macOS/Linux 用 dos2unix,Windows 用 PowerShell 的 Set-Content -Encoding UTF8NoBOM,更稳、更快、不卡顿。
最常被忽略的一点:Git 的 core.autocrlf 和项目里的 .gitattributes 才是跨平台协作的底层防线。Sublime 只负责“你看到和编辑时的样子”,而 Git 决定“提交到仓库时长什么样”。两者不配平,早晚会在 diff 里看到一堆红色 ^M。

















