sublime如何设置保存时自动转换换行符为LF?(Git友好配置)

16次阅读

sublime Text 默认不自动统一换行符,需配置 “default_line_ending”: “lf” 实现新文件默认 LF;但已存 CRLF 文件需插件(如 LineEndings)或 git 的 core.autocrlf 与 .gitattributes 才能彻底规范。

sublime如何设置保存时自动转换换行符为LF?(Git友好配置)

sublime text 默认不会在保存时自动统一换行符,但可以通过配置让所有文件保存为 LFunix/linux/macOS 风格),这对 Git 仓库尤其重要——避免 CRLF 混入导致 git diff 误报或 CI 构建失败。

设置全局默认换行符为 LF

这是最直接的方案,影响所有新建/未指定换行符的文件:

  • 打开 Preferences → Settings – User
  • 在右侧配置中添加或修改 "default_line_ending" 字段
  • 值必须是字符串 "lf"(小写,不能写成 "LF""n"
{     "default_line_ending": "lf" }

注意:该设置只对新创建文件或未显式设置换行符的文件生效;已存在且手动设为 CRLF 的文件仍保持原样,需另存或手动转换。

保存时强制转为 LF(无视当前文件换行符)

仅靠 default_line_ending 不够——它不干预已有文件的换行符。要真正“保存即转换”,需启用 ensure_newline_at_eof_on_save 并配合插件或手动操作,但 Sublime 原生不支持“保存时无条件覆盖换行符”。可行替代路径:

  • 安装插件 LineEndings(通过 Package Control),它提供命令 Convert Line Endings: To Unix,可绑定快捷键
  • 或使用内置命令:Ctrl+Shift+Pwin/Linux)/Cmd+Shift+P(macos)→ 输入 Convert Line Endings: Unix → 回车
  • 若希望自动化,可用 Save Hook 类插件(如 EventListener 自定义插件),但需写 python 脚本监听 on_pre_save 事件并调用 view.set_line_endings("unix")

Git 提交前自动标准化(更推荐的防线)

与其依赖编辑器,不如让 Git 自己处理——这才是真正 Git 友好的做法。在项目根目录或全局 Git 配置中启用 core.autocrlf

  • Linux/macOS 用户推荐:git config --global core.autocrlf input(提交时转 LF,检出不转换)
  • windows 用户若开发跨平台项目,也建议设为 input,而非 true(后者会在检出时转 CRLF,易与编辑器冲突)
  • 同时确保项目有 .gitattributes 文件,显式声明文本文件行为:
    * text=auto eol=lf

这样即使 Sublime 误存了 CRLF,Git 提交时也会被纠正,比编辑器配置更可靠。

真正容易被忽略的是:Sublime 的 default_line_ending 不会重写已打开文件的换行符状态,而 Git 的 autocrlf.gitattributes 才是跨团队协作中防止换行符污染的主力。编辑器配置只是辅助,别把它当成唯一防线。

text=ZqhQzanResources