sublime怎么快速删除行首或行尾空格_sublime正则清理多余空白【方法】

16次阅读

最稳方式是用sublime自带正则替换:先^s+替换为空删行首空格,再s+$替换为空删行尾空格;顺序不可反,否则纯空行会被清空。

sublime怎么快速删除行首或行尾空格_sublime正则清理多余空白【方法】

sublime text 里删行首/行尾空格,最稳的方式是用自带的正则替换,不装插件、不写脚本,两步搞定。

^s+s+$ 分别匹配行首/行尾空白

Sublime 的「查找 → 替换」支持 PCRE 风格正则,^$ 默认按行锚定(无需开启「. matches newline」),所以:

  • ^s+ 精准匹配每行开头的一个或多个空白(空格、制表符)
  • s+$ 匹配每行末尾的一个或多个空白
  • 注意:s 包含空格、tnr,但实际在单行替换中 nr 不会出现在行内,所以安全
  • 别用 ^[ t]+ 这种写法——虽然也行,但 s 更简洁且覆盖全

操作步骤:打开替换面板 → 开启正则 → 输入模式 → 替换为空

快捷键 Ctrl+Hwindows/linux)或 Cmd+HmacOS),然后:

  • 点击右下角 .* 按钮启用正则模式(高亮变蓝)
  • 「Find What」填 ^s+,「Replace With」留空 → 点 Replace All 删所有行首空格
  • 再把「Find What」改成 s+$,同样留空替换 → 删所有行尾空格
  • 顺序不能反:如果先删行尾,某些行可能变成纯空白行,再删行首时会被清空整行(这不是 bug,是预期行为)

想一键清理「行首 + 行尾 + 多余中间空格」?用这个正则

如果还要压缩连续空格(比如把 ab 变成 a b),可以分两步:

  • 先执行 ^s+|s+$(注意中间的 |,表示“或”)→ 一次干掉行首和行尾空白
  • 再执行 [ t]{2,} → 替换为单个空格,处理中间多余空格;或用 +(一个空格加 +)更简单
  • 警告:s{2,} 会误伤制表符混合场景,建议限定为 [ t]{2,} 或直接 +
Find What: ^s+|s+$ Replace With: (空)

为什么不用「Edit → Line → Trim Trailing White Space」?

菜单里的这个命令(快捷键 Ctrl+Shift+P → 输入 Trim Trailing)只删行尾,且默认不删行首;它适合保存前自动清理,但无法定制。如果你需要:

  • 只删某几行的行首空格(比如注释块缩进)→ 必须手动选中后正则替换
  • 保留某些行尾空格(如 markdown 的硬换行 )→ 正则可加条件,例如 s+(?!s$) 排除结尾两个空格的情况(较复杂,一般不必要)
  • 批量处理多个文件 → 正则替换支持「In Selection」「In Files」,比菜单命令灵活得多

真正容易被忽略的是:Sublime 的 ^$ 在多行文本中默认以换行符为界,但如果你打开了「. matches newline」,^ 就只匹配整个文本开头,$ 只匹配结尾——这时候正则就失效了。务必确认右下角 .* 是激活状态,且「. matches newline」是关闭的。

text=ZqhQzanResources