删HTML空行必须用^\s*$,需关闭. matches newline;^$和\n\n均不可靠,因前者不匹配含空白的“伪空行”,后者在Windows下失配且易误删内容。

Sublime Text删HTML空行必须用^\s*$,不是^$或\n\n
HTML 文件里大量换行常来自模板生成、复制粘贴或格式化工具,但^$只能删真正“什么都没有”的行,遇到<div></div>之间带空格或Tab的“伪空行”就完全失效;\n\n则在Windows(\r\n)下几乎不匹配,还可能误删<script></script>块内合法的换行。只有^\s*$能稳定覆盖所有情况:它匹配整行仅含空白字符(空格、\t、\r、全角空格等)或为空的行,且不依赖换行符类型。
删HTML空行前必须关掉. matches newline
这个设置一开,\s会跨行吞内容,^和$就失去行边界意义——比如一段HTML注释<!--\n\n-->可能被整个匹配并删掉,而不是只删中间空行。操作时务必确认右下角\n图标未高亮。常见误操作包括:
- 中文输入法(如搜狗)下按
Cmd+H打不开面板,或粘贴^\s*$后变成全角符号 - 替换框里不小心多了一个空格或
\n,结果每删一行反而多塞一个换行,空行越删越多 - 没点右下角
.*图标启用正则,^\s*$被当普通字符串搜,根本找不到
HTML里特殊空白字符要手动加进正则
从网页、CMS后台或微信公众号复制的HTML,常含\u200b(零宽空格)、\uFEFF(BOM)、\u00a0(不间断空格)、\u3000(全角空格),这些\s默认不匹配。删完看着空,实际仍存在,Git提交时会报trailing whitespace。补救方法:
- 先按
Ctrl+Shift+P输入toggle_whitespace,看行首是否显示·或→,或出现U+200B标记 - 把查找内容换成:
^[\s\u200b\uFEFF\u00a0\u3000]*$ - 仍要确保
. matches newline关闭,否则加料后行为不可控
删完HTML末尾可能没换行符,影响校验
^\s*$能删掉最后一行(如果它为空且无结尾换行符),但删完文件末尾很可能不以\n结尾。这对HTML本身无害,但若该文件要被Webpack、ESLint或CI脚本处理(尤其配合prettier或htmlhint),可能触发Missing newline at end of file警告。补救只需一步:Ctrl+Shift+P → 输入Insert Final Newline回车。别用Enter手动敲,容易多出空行;也别信“自动补”,Sublime默认不开启此行为。
立即学习“前端免费学习笔记(深入)”;



















