Ctrl+Shift+K 是删行而非删空行的快捷键,它无条件删除光标所在整行;批量删空行须用正则 ^\s*$ 配合启用正则、禁用 . matches newline、替换框留空三项设置,并注意处理全角空格等隐形字符。

没有全局一键删所有空白行的快捷键,Ctrl+Shift+K 只删当前光标所在行,不是“空行”。 它不管内容,只认光标位置——哪怕那行写满代码,按一次就整行消失。
为什么 Ctrl+Shift+K 不是删空行的正确工具
这个快捷键本质是「删行」,不是「删空行」:
- Ctrl+Shift+K(Windows/Linux)或 Cmd+Shift+K(macOS)作用对象永远是光标所在的那一行
- 它不检查该行是否为空、是否含空格、是否只有注释——只要光标停那儿,就删整行加换行符
- 常见误操作:想删空行,却把光标停在非空行上,结果误删业务代码
- 如果文件里有 20 个空行,你得手动把光标逐行移到每一行开头再按 20 次,效率远低于正则替换
真正能批量删空行的,只有正则替换 + 正确配置
必须用 ^\s*$,但光写对正则还不够,三个设置错一个就失效:
- 右下角状态栏的 .* 图标必须点亮(启用正则)
- 右下角的 \n 图标一定不能高亮(即禁用 . matches newline)
- Replace With 框必须彻底为空——填 \n、空格、甚至不可见字符,都会导致越删越多
- 中文输入法常劫持 Cmd+H 或粘贴异常,建议切英文输入法后手动敲 ^\s*$,别复制
处理网页/Excel 粘贴来的“隐形空行”要加料
普通 \s 不覆盖全角空格(\u3000)、零宽空格(\u200b)、BOM(\uFEFF)等,这些会让“看着空”的行逃过 ^\s*$:
- 先按 Ctrl+Shift+P 输入 toggle_whitespace,看行首是否显示 · 或 →
- 若发现 U+200B 或 EF BB BF 标记,查找内容就得改成:^[\s\u200b\uFEFF\u00a0\u3000]*$
- 仍要确保 . matches newline 关闭,否则加料后行为不可控
- 删完末尾若还剩一两个空行,不是 bug:把光标移到最后一行开头,用 Ctrl+Shift+K 补删——它会自动补换行符,不会破坏上下文
真正容易被忽略的是:删完后文件末尾可能没换行符。如果项目要求 POSIX 兼容(比如 Python 脚本、Shell 配置),记得手动补一个,或运行 Ctrl+Shift+P → Insert Final Newline。


















