删空行必须用 ^\s\*$,它匹配整行仅含空白字符或完全为空的行;删行尾空格应启用 "trim_trailing_white_space_on_save": true,避免正则误伤缩进或特殊空白字符。

直接删空行用 ^\s*$,删行尾空格用原生配置 "trim_trailing_white_space_on_save": true——两者不能混用正则硬刚,否则要么漏删伪空行,要么把 Python 缩进或 Makefile 变量展开全毁掉。
删空行必须用 ^\s*$,别碰 ^$ 或 \n\n
它匹配整行只含空白字符(空格、\t、\r、\n)或完全为空的行,不依赖换行符类型,也不跨行。常见错误:
-
^$:漏掉带空格或 Tab 的“伪空行”,从网页复制的文本基本清不干净 -
\n\n:Windows 的\r\n\r\n完全不匹配,且会误删代码块间的合法双换行 -
^\s*\n:把换行符当内容吞掉,替换后可能让两行代码“焊”在一起 -
^s*$(少反斜杠):Sublime 直接不识别,搜不到任何结果
删行尾空格优先配 trim_trailing_white_space_on_save
改用户设置比写正则更稳,它只动每行末尾的空格和 \t,不动缩进、中间空格、空行本身:
一款AI开发辅助工具,主要用于通过后台进程将编码任务委托给 Codex、Claude Code 或 Pi 智能体。适用场景:(1)构建或创建新功能/应用,(2)审查 PR,适合需要提升相关任务效率的用户。
- 打开 Preferences → Settings – User,在 JSON 里加:
"trim_trailing_white_space_on_save": true - 必须用英文双引号;如果前面已有配置项,这行末尾要加逗号
- 保存设置文件(
Ctrl+S),不用重启;新建.txt文件输hello␣␣␣后保存即可验证 - 失效常见原因:右下角语法类型(如
source.python)加载了专属设置覆盖全局;或装了TrailingSpaces插件又开了原生选项,二者冲突
特殊空白字符(全角空格、零宽空格、BOM)得手动加料
普通 \s 不覆盖 \u3000(全角空格)、\u200b(零宽空格)、\uFEFF(BOM)、\u00a0(不间断空格)。处理微信/Excel/网页粘贴内容时:
- 先开 View → Show White Space(或
Ctrl+Shift+P输入toggle_whitespace),看是否显示·、→或U+200B等标记 - 查找到内容换成:
^[\s\u200b\uFEFF\u00a0\u3000]*$ - 仍要关掉
. matches newline,否则表达式行为不可控 - 别信
^\s*$(?!\n)这类 PCRE 断言——Sublime 默认不支持,会静默失效
文件末尾残留空行不是 bug,是锚定逻辑使然
^\s*$ 匹配的是「有换行符边界」的行。若文件以 \n\n 结尾,它能删倒数第二行;但若最后一行为空且**无结尾换行符**(EOF 前光标停在空行),该行根本不会被匹配。
- 验证方法:打开控制台(View → Show Console),输入
view.substr(view.line(view.size())),返回''就说明存在这种 EOF 空行 - 补救方式只有两个:
Ctrl+End移到行尾按Backspace;或先保存文件(强制补上换行符),再跑正则 - 别用
Delete或Backspace手动删——它们只删光标前字符,容易留下“视觉空行” - 真正容易被忽略的是:删完后文件末尾可能没换行符。Python 脚本、Shell 配置等 POSIX 场景下,记得手动补一个,或运行
Ctrl+Shift+P→Insert Final Newline










