goland无一键删空行功能,需用正则替换(如^\s*$\n)或代码中strings.replace(s, "\n\n", "\n", -1)处理,关闭“在空行上保留缩进”可提升清理效果。

GoLand 里没有“一键删空行”的内置功能
GoLand 本身不提供类似 Ctrl+Shift+L 这种直接批量删除所有空行的快捷键或菜单项。它默认把空行视为格式的一部分,尤其在启用了「在空行上保留缩进」选项时,空行会被主动维护——这不是 bug,是设计选择。
用「查找替换」临时清空空行最可靠
这是当前最可控、零插件、不改逻辑的方式,适用于临时整理代码或模板生成结果:
- 打开查找替换面板(
Ctrl+R或Cmd+R) - 勾选「Regex」(正则模式)
- 查找内容填:
^\s*$\n(匹配仅含空白字符或完全为空的行 + 换行符) - 替换为空(留空)
- 点击「Replace All」
⚠️ 注意:^\s*$\n 会匹配末尾带空格/制表符的“伪空行”,但不会误删带注释的行(如 // 单独成行);若想连注释行也跳过,得用更复杂的正则,但通常没必要。
写文件时用 strings.Replace 预处理更稳妥
如果你是在生成代码(比如模板渲染、配置生成、日志清洗),别依赖编辑器行为,直接在 Go 代码里做:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 对纯 Unix 换行字符串(
\n),用strings.Replace(s, "\n\n", "\n", -1)最快,不分配新切片 - 若字符串可能含 Windows 换行(
\r\n),先统一转为\n再处理,或改用strings.FieldsFunc+strings.TrimSpace - 别用
strings.Split+filter,它会额外分配 slice,且对首尾换行敏感
例如模板输出后清理:cleaned := strings.Replace(templateOutput, "\n\n", "\n", -1),比在 GoLand 里手动操作更可复现。
别开「在空行上保留缩进」除非真需要
这个设置(Settings > Editor > General > Keep indents on empty lines)是空行顽固的根源:
- 关掉它,GoLand 格式化时就不会往空行塞空格或 tab
- 关掉后,按
Ctrl+Alt+L(重新格式化)会自动抹掉空行里的缩进,让后续手动删更干净 - 但注意:关掉后,某些结构化代码(如 interface 定义中间的空行)可能视觉上变紧凑,需权衡可读性
真正难处理的从来不是空行本身,而是空行里混着不可见的 \t、\r 或全角空格 —— 这些靠编辑器按钮根本看不见,得靠正则或 strings.TrimSpace 配合判断。










