最稳妥方案是搜索\s*\n替换为空,可跨平台处理换行符;需关闭GoLand的“Keep indents on empty lines”设置,否则格式化会恢复空行缩进。

直接用正则替换就能清掉多余空行,不需要装插件或写脚本。
搜索 \s*\n 替换为空行
这是最稳妥的方案,能同时处理 Windows 的 \r\n 和 Unix 的 \n 换行符混合情况:
-
\s*匹配任意数量的空白字符(包括空格、制表符、回车) -
\n确保只匹配“以换行结束”的空行,不会误删带注释的行 - 替换内容留空,即直接删掉整行(含可能存在的缩进空格)
为什么不用 ^\s*$?
这个正则看似直观,但在 GoLand 里容易出问题:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 它依赖行首
^和行尾$锚点,在多行模式下行为不稳定 - 如果文件末尾没有换行符,最后一行可能不被匹配
- GoLand 的“替换全部”对
^\s*$的跨平台兼容性不如\s*\n
执行前必须关闭“保留空行缩进”设置
否则即使替换了,GoLand 自动格式化时又会把空行上的空格/制表符加回来:
- 进入
Settings → Editor → Code Style → Go → Blank Lines - 取消勾选
Keep indents on empty lines - 这步不做,你刚删完空行,一按
Ctrl+Alt+L就又回来了
真正麻烦的不是怎么删,而是删完后格式化工具自动补空格——所以关掉那个缩进保留选项比写对正则还关键。

















