Sublime Text换行符分三层:当前文件真实格式、新建文件默认值、项目级覆盖规则;右下角状态栏显示LF或CRLF即真实格式,未显示时可用命令面板“Set Line Endings”或HexViewer查末尾字节确认;点击状态栏可切换当前文件换行符但需手动保存;新建文件默认LF需在Settings–User中设"default_line_ending": "unix";EditorConfig会覆盖该设置;批量转换已打开文件用“Convert Line Endings to LF”命令;目录级批量处理应使用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
点击右下角的 LF 或 CRLF,选 Convert to Unix line endings 或 Convert to Windows line endings。这个操作只改换行符,不碰编码、不重排版。
- 必须手动按
Ctrl+S才写入磁盘,不保存等于白转 - 如果文件里混有
\r\r\n这类脏数据,它会原样保留,得先用正则\r{2,}\n清理 - 命令名区分大小写:
Convert Line Endings to LF有效,convert line endings不匹配
怎么让新文件默认用 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→ 回车 - 所有已打开文件都会被修改,但依然要再执行
Ctrl+Shift+P→Save All才真正落地 - 真要处理整个目录(比如
src/下所有.py),别依赖 Sublime —— macOS/Linux 用dos2unix,Windows 用 PowerShell 的Set-Content -Encoding UTF8NoBOM,更稳、更快、不卡顿
跨平台协作时真正要盯住的边界不在编辑器里,而在 Git 的 .gitattributes 和 core.autocrlf 设置上;编辑器里的转换只是表层动作,静默破坏常发生在检出/提交环节。


















