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

Sublime Text 里删行首/行尾空格,最稳的方式是用自带的正则替换,不装插件、不写脚本,两步搞定。
用 ^\s+ 和 \s+$ 分别匹配行首/行尾空白
Sublime 的「查找 → 替换」支持 PCRE 风格正则,^ 和 $ 默认按行锚定(无需开启「. matches newline」),所以:
-
^\s+精准匹配每行开头的一个或多个空白(空格、制表符) -
\s+$匹配每行末尾的一个或多个空白 - 注意:
\s包含空格、\t、\n、\r,但实际在单行替换中\n和\r不会出现在行内,所以安全 - 别用
^[ \t]+这种写法——虽然也行,但\s更简洁且覆盖全
操作步骤:打开替换面板 → 开启正则 → 输入模式 → 替换为空
快捷键 Ctrl+H(Windows/Linux)或 Cmd+H(macOS),然后:
- 点击右下角
.*按钮启用正则模式(高亮变蓝) - 「Find What」填
^\s+,「Replace With」留空 → 点Replace All删所有行首空格 - 再把「Find What」改成
\s+$,同样留空替换 → 删所有行尾空格 - 顺序不能反:如果先删行尾,某些行可能变成纯空白行,再删行首时会被清空整行(这不是 bug,是预期行为)
想一键清理「行首 + 行尾 + 多余中间空格」?用这个正则
如果还要压缩连续空格(比如把 a 变成 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」是关闭的。










