Sublime Text 保存时自动添加换行符需设置 "ensure_newline_at_eof_on_save": true,软换行显示需设 "word_wrap": true,二者均须写入用户配置;项目配置或插件可能覆盖该设置。

Sublime Text 怎么让文件保存时自动换行
Sublime Text 默认不会在文件末尾加换行符,但很多工具链(比如 Git、Shell 脚本、Python 的 print() 行为)都期望文件以换行符结尾。不加会导致警告或行为异常。
关键配置项是 ensure_newline_at_eof_on_save,设为 true 即可:
"ensure_newline_at_eof_on_save": true
这个设置只影响「保存时」——不是实时插入,而是检测末尾无换行符就自动补一个。它不改变已有内容的换行风格(LF/CRLF),也不触发语法检查或格式化。
- 必须写在用户配置里(
Preferences → Settings – User),不要改默认配置 - 如果同时启用了代码格式化插件(如
Black或Prettier),它们可能覆盖该行为,优先级更高 - 对二进制文件或 .gitattributes 已声明
binary的文件无效
Sublime Text 如何防止代码水平溢出屏幕(软换行开关)
代码过长不换行,得靠滚动条横向拖拽,这是视图渲染问题,不是文件内容问题。解决方式是开启「软换行」——只是显示折行,不修改实际文本。
对应设置项是 word_wrap,设为 true:
"word_wrap": true
但它默认只对当前视图生效。想全局生效,同样要写进用户配置。注意:这不是「自动插入换行符」,也不是「保存时截断长行」,纯属前端渲染控制。
- 搭配
wrap_width可设折行宽度(单位字符),比如"wrap_width": 80;设为0表示按窗口宽度自适应 - 某些语法高亮主题(尤其深色系)可能让折行线不明显,可加
"draw_centered": false避免居中干扰阅读 - Markdown 预览或 LaTeX 编译类插件有时会禁用软换行,需单独在插件配置中打开
为什么改了配置没反应?常见失效场景
Sublime Text 的配置是分层加载的:默认配置 ← 用户配置 ← 项目配置 ← 视图临时设置。优先级从右到左递增,后加载的会覆盖前一个。
最常踩的坑是:改了用户配置,但当前文件属于某个项目(有 .sublime-project),而该项目配置里写了 "word_wrap": false 或 "ensure_newline_at_eof_on_save": false,直接覆盖了你的设置。
- 检查右下角状态栏是否显示「Project」字样;有则打开
Project → Edit Project查看是否有冲突配置 - 临时测试可在命令面板(
Ctrl+Shift+P)输入Set Syntax: Plain Text切换语法,排除语法特定设置干扰 - 修改配置后无需重启,但已打开的文件需手动触发一次保存或切换标签页才能应用新视图规则
Mac / Windows 下换行符差异会影响这些设置吗
不影响。无论是 ensure_newline_at_eof_on_save 还是 word_wrap,都不依赖系统换行符类型(\n vs \r\n)。它们只关心「是否存在换行符」或「是否渲染折行」。
但要注意:如果你用 file_format 手动设成 DOS 或 UNIX,再配合 ensure_newline_at_eof_on_save,Sublime 会补对应风格的换行符(即 DOS 模式补 \r\n,UNIX 补 \n)。
- 换行符风格由
default_line_ending控制,默认值是"system",会随 OS 自动选;建议显式设为"unix"统一协作环境 - Git 用户务必同步配置
.gitattributes中的* text=auto eol=lf,否则 Sublime 补了\n,Git 提交时又转成\r\n,白忙一场
事情说清了就结束。真正麻烦的是项目配置和插件之间的隐式覆盖,而不是开关本身。










