sublime删行尾空格最直接方法是用正则[ \t]+$替换为空,需启用正则且关闭“. matches newline”;长期建议配置"trim_trailing_white_space_on_save": true实现保存时自动清理。

Sublime 怎么删行尾空格?用 [ \t]+$ 最直接
删行尾空格不是靠肉眼找,而是用正则精准定位「行末的空格和 Tab」。最稳写法是 [ \t]+$:方括号里明确列出空格和 \t,+ 表示至少一个,$ 锚定行尾——它不会误吞换行符,也不吃掉行中或行首的空白。
常见错误是用 \s+$:虽然 \s 看似更全,但它在 Sublime 里默认包含 \r、\n,一匹配就可能把换行符也拖进来,导致上下两行“粘连”。而 [ \t] 只管你真正在意的两种行尾脏字符,安全可控。
- 打开替换面板(
Ctrl+H/Cmd+H) - 勾选右下角
.*图标(启用正则) -
Find What填:[ \t]+$ -
Replace With留空 - 点
Replace All
为什么不能开 “. matches newline”?
这个选项一旦点亮,. 就能匹配换行符,整个正则行为就失控了。[ \t]+$ 本该只删行尾空格,但开了它之后,$ 失效,+ 可能跨行贪婪匹配,结果把下一行开头的内容也卷进来删掉——比如把 return true;\n\nif (x) 变成 return true;if (x),语法直接崩。
务必确认右下角那个 \n 图标没高亮。这不是可选项,是必须关的开关。
想保存时自动清理?改用户配置就行
手动替换适合临时救急,长期协作项目建议开启自动 Trim。打开 Preferences → Settings,在右侧用户配置里加这两行:
"trim_automatic_white_space": true, "trim_trailing_white_space_on_save": true
注意:trim_automatic_white_space 是输入时自动删(比如回车后自动抹掉上一行尾空格),trim_trailing_white_space_on_save 是保存时强制清理。两者可以共存,但后者更常用、更可靠。
验证是否生效:在某行末尾敲几个空格,按 Ctrl+S 保存,空格应立刻消失。如果没反应,检查是否拼错键名,或配置文件语法有误(比如缺逗号、多逗号、引号不配对)。
中文文档里的全角空格怎么办?
[ \t]+$ 不处理全角空格(\u3000)、不间断空格(\u00a0)或零宽空格(\u200b)。这些常从网页、微信、Word 粘贴过来,看着像空格,但正则根本看不见。
要一并清理,得显式扩展字符集:[ \t\u3000\u00a0\u200b]+$。但注意:加得越多,误伤风险越高——比如某些模板字符串里故意用全角空格对齐,删了会破格式。
更稳妥的做法是先开 View → Show White Space(或 Ctrl+Shift+P 输入 toggle_whitespace),让所有空白显形。如果看到行尾有 · 或 →,说明是普通空格/Tab,[ \t]+$ 就够;如果看到 (全角)或小方块(BOM/零宽),再针对性加码。
真正容易被忽略的是:行尾空格删干净了,但文件末尾可能没换行符。Git 提示 no newline at end of file 不是警告空格,而是警告缺失 \n。这和空格无关,但常被一起发现——别混为一谈,也别用删空格的正则去碰换行符。











