sublime text 保存时自动删除末尾空行依靠原生设置 trim_trailing_whitespace_on_save,启用后清理行尾空白及文件末尾连续空行,但不影响中间空行;需正确配置用户设置、避免语法错误,并注意项目级配置覆盖。

Sublime Text 保存时自动删除末尾空行,靠的是 trim_trailing_white_space_on_save
这个设置不是插件功能,是 Sublime 原生支持的开关。默认关闭,启用后会在每次保存时自动清理每行末尾的空格和制表符,同时也会删掉文件末尾的连续空行(注意:只删“末尾”的空行,不是全文所有空行)。
常见错误现象:trim_trailing_white_space_on_save 设为 true 后,保存文件没反应——大概率是因为你改错了配置文件位置,或者被项目级配置覆盖了。
- 必须修改用户偏好设置(
Preferences → Settings – User),不是默认配置(Settings – Default) - 确保 JSON 格式合法:逗号不能多、引号不能少、最后一项后面不能有逗号
- 如果项目根目录有
.sublime-project,它里面的settings会优先于用户设置,需同步检查
想删「所有」空行?trim_trailing_white_space_on_save 不行,得手动或用插件
原生设置只处理“行尾空白”和“文件末尾空行”,对函数中间、段落之间的空行完全无感。比如这段代码:
def foo():
pass
def bar():
pass
保存后中间那两个空行依然存在。
- 临时解决:选中全部(
Ctrl+A),执行Ctrl+Shift+P→ 输入Remove Empty Lines(需安装插件TrailingSpaces或AdvancedRename等才带此命令) - 全自动方案:装
TrailingSpaces插件后,在用户设置里加"trailing_spaces_modified_only": false,再配合保存钩子(需额外写 Python 插件或用EventListener) - 更轻量做法:用正则替换
\n\s*\n→\n\n手动压缩,但容易误删缩进空行,慎用
和 ensure_newline_at_eof_on_save 的关系要理清
这两个设置常一起出现,但职责完全不同:ensure_newline_at_eof_on_save 是保证文件末尾一定有且只有一个换行符;trim_trailing_white_space_on_save 是清理行尾空白和末尾空行。两者可共存,互不干扰。
- 如果关了
ensure_newline_at_eof_on_save,而开了trim_trailing_white_space_on_save,可能造成文件末尾既没换行、也没空行——Git 会标为no newline at end of file - 推荐组合:
"trim_trailing_white_space_on_save": true+"ensure_newline_at_eof_on_save": true - 部分团队规范要求末尾无空行但必须有换行符,此时两个都开刚好满足
Mac / Windows 路径和配置热加载细节
Sublime 不会实时监听配置文件变化,改完 Preferences.sublime-settings 后必须重启 Sublime 或用 Preferences → Settings – User 窗口右下角的重载按钮(小刷新图标)。
- Mac 用户配置路径:
~/Library/Application Support/Sublime Text/Packages/User/Preferences.sublime-settings - Windows 用户路径:
%APPDATA%\Sublime Text\Packages\User\Preferences.sublime-settings - 改完别忘了检查左下角状态栏——保存时若看到 “Trimming trailing whitespace” 提示,说明生效了










