VSCode自带正则查找替换可直接删除空行:查找^\s*$\n(匹配纯空白行及换行符),替换留空;注意文件编码、换行符差异及末尾多空行处理。

VSCode 自带查找替换能直接干掉空行
不用装插件,VSCode 的正则查找替换就能搞定。关键是把空行识别准——它得是“只有换行符、没有空格或制表符”的行。
打开查找面板(Ctrl+H 或 Cmd+H),勾选右上角的 .* 按钮启用正则模式,然后填:
- 查找:
^\s*$\n - 替换:
(留空)
^\s*$ 匹配一行开头到结尾全是空白字符(包括空格、\t、\r),\n 把换行符也吃掉,避免替换成“空字符串+换行”,导致空行变多。
为什么 ^\n 不行?
很多人试过 ^\n,结果没反应——因为这只会匹配“开头就是换行符”的行,但空行在文本里其实是“某行内容为空 + 换行符”,光写 ^\n 实际上是在找“换行符出现在行首”,而编辑器里换行符是行尾的。
更常见错误是只写 ^\s*$ 不加 \n,替换后空行变成“空字符串+换行”,视觉上还是空行,只是内容被清空了,换行符还在。
- ✅ 正确:用
^\s*$\n,删整行(含换行符) - ❌ 错误:用
^\n,几乎不匹配任何空行 - ❌ 错误:用
^\s*$,替换后空行仍在,只是内容为空
处理文件末尾多个连续空行要小心
上面的正则会逐行匹配,所以文件末尾一堆空行会被一个个删掉。但如果想“最多保留一个空行结尾”,就得换个思路:
- 先用
^\s*$\n清一遍 - 再查
\n{3,}(三个及以上连续换行),替换成\n\n
注意 \n{3,} 在 Windows 上可能不生效,因为换行是 \r\n;如果文件是 CRLF 结尾,得用 (\r\n){3,},且确保 VSCode 右下角显示的是 CRLF 而不是 LF。
批量处理多个文件时别漏掉文件编码和换行符差异
VSCode 的查找替换默认只作用于当前文件。要批处理,得先用 Ctrl+Shift+H 打开“全局搜索”,输入正则后点“… → Replace in Files”。但这里容易出问题:
- 某些文件用
UTF-8 with BOM编码,开头的\uFEFF会让^\s*$失效(因为\s不包含 BOM) - 混合了
LF和CRLF的项目,\n可能漏掉部分空行 - 替换前建议先点“Preview”看匹配是否合理,尤其检查文件末尾和开头几行
真要稳定批量处理,不如导出为脚本——但那是另一回事了。VSCode 做一次清理够用,反复操作就该怀疑是不是代码格式本身有问题。


















