Sublime怎么一键移除所有空行 Sublime文本清洗操作方法【技巧】

8次阅读

sublime Text真正一键删空行需用正则^s*$n?配合正则模式与跨行匹配,可处理纯空行、含空白符行及文件末尾空行;宏录制或Text Pastry插件可实现多文件批量清理,并需注意bom、换行符等隐形干扰因素。

Sublime怎么一键移除所有空行 Sublime文本清洗操作方法【技巧】

sublime text 里怎么真正“一键”删空行

不能靠 Ctrl+H 手动搜 ^$ 然后点全部替换——那不算“一键”,而且默认不匹配文件末尾的空行、也吃掉带空白符(空格、制表符)的“伪空行”。真正的快捷方案是用正则 + 命令组合,且必须开启“正则模式”和“跨行匹配”。

  • 打开查找面板(Ctrl+HCmd+H),勾选 .*(正则模式)
  • 查找框输入:^s*$n? —— 这能匹配纯空行、只含空白符的行,以及它们后面的换行符(避免多删一行)
  • 替换框留空,点击 Replace All
  • 如果想绑定成真正的一键操作:可录宏(Ctrl+Q 开始,执行上述步骤,再 Ctrl+Q 结束),然后保存为命令或绑定快捷键

为什么 ^s*$^$ 更靠谱

^$ 只匹配“完全没字符”的行,但实际文本里常有看不见的 t 或 BOM 后残留空格;^s*$ 中的 s 包含所有空白字符,更符合“视觉上为空”的需求。不过要注意:

  • s 在 Sublime 默认正则引擎(PCRE)中会匹配换行符,所以必须加 $ 锚定行尾,否则可能误吞下一行开头
  • windows 换行是 rnlinux/macOS 是 n^s*$n?n? 能兼容两者,但不会删掉最后一行没换行符时的空行——这是常见漏删点
  • 如果文件结尾有连续空行,建议先执行一次 ^s*$(?=r?n)(正向先行断言),再补一次 ^s*$ 清尾部

用命令行插件 Text Pastry 批量处理多文件空行

单文件用查找替换够用,但如果你要清洗整个项目里几十个 .txt.log 文件,手动开每个文件太慢。装好 Text Pastry 后,可以:

  • 选中多个标签页(Ctrl+Click)或使用侧边栏多选文件
  • Ctrl+Shift+P → 输入 Text Pastry: Replace → 回车
  • 在弹出框中填入查找:^s*$n?,替换留空,确认执行
  • 注意:Text Pastry 的替换是“逐文件”而非“逐选区”,所以多文件时它比原生替换更稳,不会因光标位置失效

别忽略编码和换行符导致的“隐形空行”

有些空行删不掉,不是正则写错,而是文件用了 UTF-8 with BOM 或混合了 rnn。此时 ^s*$ 可能被 BOM 干扰,或 r 不被 s 正确识别(取决于 Sublime 版本)。

  • 先检查右下角状态栏显示的编码和换行格式(如 UTF-8 / windows
  • 统一换行符:菜单 File → Line Endings → unix (LF)Windows (CRLF)
  • 若仍有异常,用十六进制查看插件(如 HexViewer)确认是否含 EF BB BF(BOM),有则转为无 BOM 的 UTF-8 再操作

真正干净的空行清理,往往卡在“你以为它是空的”那几处——BOM、混合换行、不可见控制符。正则只是工具,前提是你得先看清文件本来的样子。

text=ZqhQzanResources