vscode删空行用正则^\s*$,可匹配含空格、制表符等空白字符的整行;^$仅匹配真正空行,易漏不可见字符;需勾选“正则表达式”并确保非多光标模式,文件末尾无换行时需手动检查。

VSCode里删空行用什么正则?
直接搜 ^\s*$,替换为空(留空替换框),勾选“正则表达式”和“匹配整个行”。这个模式能准确捕获纯空白行(包括只有空格、制表符的行),比只写 ^$ 更稳妥。
为什么 ^$ 有时删不干净?
因为很多“看起来空”的行其实含不可见字符:空格、\t、甚至 Unicode 空格(比如 \u200B)。^$ 只匹配真正什么都没有的行,而 ^\s*$ 中的 \s 会覆盖所有空白符(含换行符以外的空白),更贴近实际需求。
批量删空行时容易踩的坑
- 没关“区分大小写”或“全字匹配”——这两个对正则删空行无影响,但开着可能误关“正则表达式”开关,导致搜不到
- 在多光标编辑状态下执行替换——VSCode 会只在当前光标所在行生效,不是全文替换
- 替换了
\n\n 这种连续空行但漏掉单个空行——必须用行锚定 ^ 和 $,不能只搜 \n\s*\n
- 用了
^\s+\n ——会漏掉末尾有换行但前面没空白的空行,且无法匹配文件末尾的空行
删完空行后要注意什么?
\n\n 这种连续空行但漏掉单个空行——必须用行锚定 ^ 和 $,不能只搜 \n\s*\n
^\s+\n ——会漏掉末尾有换行但前面没空白的空行,且无法匹配文件末尾的空行VSCode 的正则替换默认不处理文件末尾的换行符前的空行。如果文件以空行结尾,^\s*$ 能匹配它;但如果最后一行没有换行符(即文件 EOF 直接结束),那行不会被当“一行”来处理,也就不会被匹配。这种边界情况没法靠一个正则全覆盖,得手动检查结尾。











