trim_trailing_white_space_on_save开启后保存时自动清理行尾空格和制表符,需在用户设置右侧面板配置为true,确保json合法、无插件冲突、未被语法或项目设置覆盖,否则无效。

trim_trailing_white_space_on_save 开启后就能在保存时自动删掉行尾空格和制表符,根本不用插件——但配错、被覆盖、或误用正则,反而会破坏代码。
怎么配 trim_trailing_white_space_on_save 才真正生效
它只在 Preferences → Settings 右侧「User」面板里起作用,不是 Default,也不是项目设置。
必须写成合法 JSON:
• 键名是 trim_trailing_white_space_on_save(注意下划线数量,别拼成 triming 或 trailing_space_on_save)
• 值是 true,不是 "true"(字符串会静默失效)
• 整个内容得包在 {} 里,已有其他配置项时,这行末尾要加英文逗号,但最后一项后面不能多逗号
• 引号必须是英文双引号,中文引号、单引号、全角标点会让整段设置被 Sublime 忽略
保存该文件后立刻生效,无需重启
为什么开了 trim_trailing_white_space_on_save 却没反应
大概率不是配置错了,而是被更高优先级规则压掉了:
• 右下角显示的语法类型(比如 text.markdown、source.makefile)可能加载了 Syntax Specific 设置,里面写了 "trim_trailing_white_space_on_save": false
• 项目根目录有 .sublime-project 文件,显式设为 false,它会直接禁用用户设置
• 已安装 TrailingSpaces 插件且启用了 trailing_spaces_on_save,两者同时开会导致光标跳动、重复清理
• 当前文件是 Plain Text 或自定义语法,Sublime 4 默认不触发该行为;可临时切换成 Python 测试是否恢复
• 某些插件(如 LaTeXTools、MarkdownPreview)会在其语法定义中强制设为 false,得去 Package Settings 里查
手动清理老文件,别用正则瞎试
快捷键最稳:
• Windows/Linux:按 Ctrl+Shift+P,输入 Trim Trailing White Space 回车
• macOS:按 Cmd+Shift+P,输入同上回车
这个命令只删每行末尾的空格和 \t,不动缩进、不碰空行、不伤 text.markdown 的两个空格换行语法
执行后不会自动保存,可以先看差异再决定是否 Ctrl+S
如果非要正则救急:
• 查找框填 \s+$,勾选右下角 .*(启用正则)
• 替换框绝对留空,千万别填 \n 或空格
• 务必关掉右下角 . matches newline(否则 $ 失效)
别用 ^\s*$——那是删空行的,不是删行尾空格
trim_automatic_white_space 适合边写边修,但有边界
它和 trim_trailing_white_space_on_save 独立运行,光标移出某行(按 →、Enter 或点击别处)就立刻清理该行尾部空白:
• 不动缩进、不删空行、不碰行中空格
• 在 source.python 或 source.go 里很实用,return 后手抖多按的空格能秒清
• 但在 text.markdown 里慎用:两个空格 + 换行是硬换行语义,删了就渲染失败
• source.makefile 行尾空格参与变量展开,source.shell 有时靠空格对齐注释,这些都建议关掉
局部禁用方法:打开一个 .md 文件 → Preferences → Settings – Syntax Specific → 加 "trim_trailing_white_space_on_save": false











