Sublime Text仅支持安全删除空行和行尾空白:删空行用正则^\s*\n?,删行尾空白启用trim_trailing_white_space_on_save配置;盲目删除所有空白会破坏代码结构。

Sublime Text 没有“一键删除所有空白字符”的通用操作——盲目删光所有空白(空格、Tab、换行)会直接破坏代码结构或文本语义。真正能安全落地的,只有两个明确场景:删空行、删行尾空白。其他所谓“清理空白”,必须按需定制正则,不能无差别执行。
删空行:用 ^\s*$ 匹配整行空白,不是 ^$
很多人输 ^$ 只删了真正“什么都没有”的行,漏掉那些带空格或 Tab 的“伪空行”。^\s*$ 才是正确写法:^ 是行首,\s* 匹配任意数量空白(含空格、Tab、\r、\n),$ 是行尾。它能覆盖所有视觉上为空的行。
- 打开替换面板:
Ctrl+H(Windows/Linux)或Cmd+H(macOS) - 务必点击右下角
.*图标启用正则模式(不勾选. matches newline) - 查找框填
^\s*$\n?——加\n?是为了防止文件末尾残留一个空行 - 替换框留空,点
Replace All
注意:\s 已包含 \r 和 \n,不需要单独处理 Windows 换行符;但 Python 文件删空行前,得确认 def 或 class 后的空行数是否符合 PEP 8(通常需两空行)。
删行尾空白:靠 trim_trailing_white_space_on_save 配置,不是手动搜
行尾空格和 Tab 是最常被误删又最难察觉的空白类型。Sublime 原生支持自动清理,根本不用正则搜替换。
- 打开全局设置:
Preferences → Settings - 在右侧用户设置中添加:
"trim_trailing_white_space_on_save": true - 保存后,每次文件保存都会自动删掉每行末尾的空格和 Tab
如果没生效,检查三点:配置是否写在用户设置(而非默认设置)里;当前文件语法是否被项目设置覆盖;是否启用了 save_on_focus_lost(切出窗口时自动保存并清理)。临时清理可用 Ctrl+Shift+P 输入 Trim Trailing White Space 手动触发。
别碰“所有空白字符”:删错 \s 会直接让代码失效
有人想用 \s+ 替换成空格来“标准化空白”,这非常危险。比如把 if (a && b) 中的双空格缩成单空格,看似整洁,但对 C/C++/Java 等语言毫无意义;更严重的是,Python 依赖缩进,删掉缩进用的 Tab 或空格会让 IndentationError 直接报错。
-
\s匹配空格、Tab、换行、回车、垂直制表符——五种全包,无法按需筛选 - 想清理日志或纯文本中的多余空格?先复制内容到新文件,再用
Find → Replace手动试+(两个空格)→(一个空格),逐步收窄 - 需要保留缩进、删其他空白?正则得写成
(? 这类带断言的表达式,普通用户极易写错
真正容易被忽略的,是“空行”和“行尾空白”之外的空白根本没有通用解——每个需求都得重写正则,且必须在副本上试。

















