Sublime多行编辑默认跳过空行,因Ctrl+Shift+L仅在有内容的行末创建光标;空行若被选中,实为含不可见字符,需开启“Show White Space”排查。

根本不用“忽略空行”——多行编辑的默认行为就是跳过空行,强行开启反而会出错。
为什么 Ctrl+Shift+L 选中所有行时不会选空行
Sublime 的 Ctrl+Shift+L(Windows/Linux)或 Cmd+Shift+L(macOS)本质是「按行分割当前选区,并在每行末尾创建一个光标」。它只作用于有内容的行:空行没有可分割的文本,自然不生成光标。
- 这个行为不是 bug,是设计逻辑——空行没有「行内容」可锚定,
^和$在空行上无法定位有效位置 - 如果你发现空行也被选中了,大概率是那行实际含不可见字符(比如
\u200b、\u00a0或全角空格\u3000),用View → Show White Space一看就露馅 - 别试图用正则预处理空行再执行多行编辑——多此一举,还可能因替换引入意外换行符
想让多行编辑“包含”空行?先确认你真需要
多数人以为“要编辑所有行”就得覆盖空行,其实只是没分清场景:
- 批量改代码变量名?空行本来就不该参与,跳过是对的
- 给每行加前缀(如
//)?空行加了也没意义,反而污染结构 - 真要对空行做操作(比如统一补
---分隔线)?那就不是“忽略”,而是明确选中它们——用Ctrl+F查找^\s*$,再按Alt+Enter全部选中,最后Ctrl+Shift+L
空行干扰多光标定位时,优先检查隐形字符
当你手动拖选多行、按 Ctrl+Shift+L 后光标没出现在预期位置,问题几乎总出在“看着空、实则不空”:
- 网页/微信粘贴的内容常带
\u200b(零宽空格)、\uFEFF(BOM)、\u00a0(不间断空格) - Excel 导出文本可能塞进
\u3000(全角空格),\s默认不匹配它们 - 解决方法很简单:打开
View → Show White Space,看到行首有·或→就说明有货;再用Find → Replace,查找^[\s\u200b\uFEFF\u00a0\u3000]*$,替换留空
真正容易被忽略的点
多行编辑本身不处理空行,但它的上游操作(比如从搜索结果生成光标、从列选择转为行选择)可能把隐形字符当“内容”对待。最麻烦的不是空行被跳过,而是你以为跳过了,结果某行末尾藏着一个 \u200b,导致后续正则替换或 Git diff 出现诡异差异——这种字符肉眼不可见,Show White Space 是唯一可靠探针。

















