多行光标不支持正则匹配,需先用正则搜索定位(Ctrl+F启用.*),再通过Alt+Enter选中所有匹配项,最后用Ctrl+Shift+L将每个匹配起始位置转为独立光标才能实现批量编辑。

多行光标本身不支持正则匹配,所谓“结合”其实是用正则先完成文本定位或替换,再手动或自动触发多行选中——这是绝大多数人卡住的第一步。
为什么 Ctrl+D 或 Ctrl+Click 不能直接选中正则匹配结果
Sublime Text 的多光标操作(如 Ctrl+D 重复选中、Ctrl+Click 手动添加)只作用于**可见的、已渲染的字符位置**,它不理解正则逻辑,也不会预扫描整个文件去高亮所有 functions+w+s*() 这类模式。
- 正则搜索(
Ctrl+F→ 勾选.*)能定位匹配项,但只是高亮,不生成光标 -
Ctrl+D只对当前光标所在词生效,哪怕这个词是正则搜出来的,也不代表它会继续按正则规则扩展 - 真正能批量生成光标的,是
Find All(Alt+Enter),但它生成的是**区域选中**,不是独立光标——这点极容易误解
Alt+Enter 后怎么把选区转成多行光标
Alt+Enter 在正则搜索激活状态下,会一次性选中所有匹配内容;但默认是「块状选区」,光标只在首尾,中间不可编辑。要变成每个匹配开头一个独立光标,必须立刻补一步:
- 确保搜索面板里正则已启用(
.*按钮亮起),且已输入有效 pattern(如console.log([^)]*)) - 按
Alt+Enter,看到所有匹配被虚线框选中 - 紧接着按
Ctrl+Shift+L—— 这才是关键:它把每个选区的**起始位置**转为独立光标,且保留原有选中范围(即光标在console.log开头,选区覆盖整行调用) - 此时敲任意字符(如
#),所有光标前会同步插入;若想编辑内容内部(比如改参数),需先按Right或End跳出选区
正则 + 多光标实战:批量提取 JSON key 或重命名变量
典型场景是处理类似 "name": "Alice", "age": 30 的键值对,想把所有 key 提取出来并加引号包裹。这时不能靠 Ctrl+D 点,得靠正则锚定结构:
- 搜索:
"([^"]+)":(注意冒号后空格可加s*更鲁棒) -
Alt+Enter选中全部 key(不含引号和冒号) -
Ctrl+Shift+L转光标 → 所有光标落在 key 开头 - 输入
",再按Ctrl+Shift+→(扩展到词尾),再输入"—— 所有 key 就被双引号包住了 - 如果 key 里含转义(如
"user\_id"),正则得写成"([^"]+?)":避免贪婪匹配跨行
真正难的不是操作步骤,而是正则写错一丁点(比如漏了 ^ 或 $ 锚点),Alt+Enter 就会选中一堆不该动的地方——多光标放大的是效率,也是风险。

















