发布于2026-07-11 阅读(0)
扫一扫,手机访问
Sublime Text 里想一键删掉所有连续的多行空白行(比如两个或以上的空行),^s*$ 这个正则配合「Find All」+「Delete」确实是目前最稳的路径。但直接上手容易掉坑——要么误删带空格的“伪空行”,要么把文件头尾的边界情况给漏了。今天就把这套操作链和常见的坑一次性讲清楚。

^s*$ 是首选正则模式这个表达式匹配的是“从行首到行尾之间只有零个或多个空白字符(包括空格、制表符)”的行。相比单纯的 ^$,它更鲁棒——^$ 只认纯空行,而实际编辑中经常有带缩进空格或 tab 的“隐形空行”,^s*$ 就能一并识别。不过要注意:它默认不匹配换行符本身,所以删除的是“行内容”而非“换行符”,得配合正确的操作才能真正压缩行距。
^ 锚定行首,$ 锚定行尾,确保整行被判定s* 包含空格、tab 以及换行符中的空白(在 Sublime 的 PCRE 引擎下,s 不含 n,但匹配行内空白已经足够)Alt+R 或点击右下角图标)光高亮不够,得让 Sublime 把所有匹配行选中并连带删除其前后的换行符,否则删完还剩一堆单空行。正确的顺序是:
Ctrl+F),输入 ^s*$,确认正则已启用Alt+Enter(Find All),此时所有空行被选中(光标会停在每行开头)Ctrl+Shift+K(Split into Lines + Delete Line)——这是关键一步,它会把每个选中行当作独立行删除,并自动移除该行对应的换行符Ctrl+Shift+K 会一并处理;但若开头有 BOM 或结尾没有换行符,可能残留,需要手动检查一下真实文本里,“空行”往往是有语义的。比如 Markdown 中用空行分隔段落,连续两个空行才表示段落间距加大;Python 代码里函数之间通常用两个空行。盲目全删会破坏结构。
^s*$(r?ns*$)+(注意开启 . matches newline),但 Sublime 对跨行匹配的支持有限,更可靠的办法是先替换 ns*n 为 nn,多轮迭代--- 或 *** 这类 Markdown 分隔线,它们前后通常各带一个空行,^s*$ 会误伤——建议先用「Find in Files」确认上下文,或者加负向断言 ^(?!(---|***|===)$)s*$说到底,真正难的不是写正则,而是判断哪些空行该留、哪些该压成一个、哪些该彻底消失——尤其当混着注释、模板变量、前端换行符时,得看上下文,不能无脑批量处理。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8