Sublime如何快速删除空行?(文本清理技巧)

7次阅读

sublime text删空行最稳方式是用正则^s*$替换为空,它匹配纯空白行;若只删真正空行用^r?n;合并多个空行为一个用(^s*$ ){2,}→ 。

Sublime如何快速删除空行?(文本清理技巧)

用正则替换一次性干掉所有空行

sublime text 里删空行最稳的方式不是手动按 delete,而是用 Find → Replace 配合正则。空行本质是「只有换行符、没有可见字符」的行,对应正则 ^s*$^ 行首,s* 零个或多个空白,$ 行尾)。

操作步骤:

  • 打开 Ctrl+Hwindows/linux)或 Cmd+Hmacos
  • 勾选 .* 按钮启用正则模式
  • 查找框填 ^s*$
  • 替换框留空
  • Replace All

注意:^s*$ 会匹配纯空格/制表符的“伪空行”,如果只想删真正什么都没有的行(不含空格),改用 ^ ? (Windows/macOS/Linux 兼容写法),但得先确保文件编码是 UTF-8 且换行符统一。

为什么不能只用 ^

直接写 ^ 看似简单,但在 Sublime 中几乎没用——因为 是换行符本身,而 ^ 匹配的是行首位置,不是字符;^ 实际匹配的是「以换行符开头的行」,这在文本中根本不存在(换行符总在行尾)。常见错误现象是:点了 Replace All 却一无所获,或者误删了不该动的行首内容。

真正要匹配「空行」,必须让正则能覆盖整行,所以必须用 ^...$ 包裹,中间允许空白(s*)。

另外,Sublime 的正则引擎默认不跨行匹配,所以 ^s*$ 安全,不会意外吞掉带内容的行。

保留一个空行分隔段落怎么办?

纯删空行容易把原本用空行分隔的段落挤成一团。如果想「合并连续多个空行,只留一个」,得用更精准的替换:

  • 查找:(^s*$ ){2,}(两个及以上连续空行)
  • 替换: (只留一个换行)
  • 记得开启正则和 Wrap around

这个写法依赖 Sublime 对 在替换中的行为:它会把匹配到的多行替换成单个换行符。注意别写成 ,否则在 macOS/Linux 上可能出错——Sublime 替换时自动适配当前文件的换行符类型。

批量处理多个文件时要注意编码和换行符混用

Find in Files 批量删空行时,如果项目里混着 (Windows)、 unix)、 (旧 Mac)三种换行符,^s*$ 仍能工作,但结果可能不一致:比如某文件末尾有 没被识别为「空白」,导致最后一行删不干净。

建议提前统一:

  • File → Save with Encoding → UTF-8 确保编码
  • View → Line Endings → Unix (LF) 统一换行符
  • 再执行正则替换

否则看似删完了,实际某些空行残留着不可见的 ,后续 git 提交或脚本处理时容易暴露问题。

text=ZqhQzanResources