Sublime多光标不支持正则直接选中,必须先在查找面板启用正则并执行Find All(Alt+Enter),再用Alt+F3或Ctrl+Shift+L生成光标;零宽断言如^、\b可用Alt+F3定位;捕获组需通过替换($1)而非多光标差异化处理;CSV列操作优先用正则定位配合Alt+F3,列选择仅适用于严格对齐场景。

正则必须先“找出来”,多光标才“跟得上”
Sublime 的多光标编辑本身不支持正则匹配,Ctrl+D、Ctrl+Shift+L、Alt+F3 都不会按正则逻辑选中内容。想靠它们直接“选中所有 id:\s*\d+”?不行。唯一可靠路径是:先用正则在查找面板里精准定位,再手动触发多光标操作。
常见错误现象:Ctrl+F 输入正则后按 Ctrl+Enter(插入换行)或 Ctrl+D,结果什么也没变——因为这些快捷键根本不响应正则匹配状态。
- 正确流程:打开
Ctrl+F→ 点击.*图标启用正则 → 输入表达式(如"name"\s*:\s*"[^"]*")→ 按Enter跳到第一个匹配 → 再按Alt+F3或Ctrl+Shift+L - 如果
Alt+F3没反应,检查状态栏是否显示Regex;没显示说明正则没真正启用 -
Ctrl+Shift+L只对当前选区生效,不是对查找结果——所以必须先按Find All(或Alt+Enter),让所有匹配高亮,再按Ctrl+Shift+L才能把每个匹配项转成独立光标
匹配零宽位置(如行首、单词边界)怎么加光标
正则里的 ^、$、\b 是零宽断言,不占用字符,但 Alt+F3 仍能定位到这些位置,适合批量插前缀/后缀。
例如,在每行开头加 // 注释:
- 查找框输入
^,开启正则和Wrap around - 按
Alt+F3→ 所有光标落在每行最左端(包括空行) - 直接输入
//,无需移动光标
容易踩的坑:^ 默认不匹配文件开头(除非勾选 Matches newline 图标 \n);混合换行符(\r\n 和 \n)会导致部分行首失配,建议先统一行尾:按 Ctrl+Shift+P → 输入 Set Line Endings: Unix
捕获组内容怎么“分别”处理,而不是全替成一样
正则替换(Ctrl+H)里的 $1 可引用捕获组,但多光标编辑下所有光标只能同步输入相同内容。想让每个匹配“各自处理”,得拆两步走。
比如把 JSON 中 "id": "123" 改成 "id": "user_123":
- 第一步:查找
"id"\s*:\s*"([^"]*)",替换为"id": "user_$1"→ 安全、可控 - 第二步:如果后续还要微调(比如补引号、改缩进),再用
Ctrl+F搜"user_[^"]*"→Alt+F3→ 光标停在引号内 → 按←移到开头 → 输入或删改
关键区别:$1 在替换框里展开,但在多光标编辑中,你敲的每个字符都会被复制到所有光标位置,无法差异化。别指望用多光标“分别输入不同值”。
列选择 + 正则,才是处理表格/CSV 的实际解法
对 CSV 第三列批量加引号?别硬套 Ctrl+Shift+L——它按换行切,不管列对齐,一错全错。
真实可行的组合是:
- 先用正则定位目标列:查找
^([^,]*,){2}([^,]*),勾选In Selection(先选中要处理的几行) - 按
Alt+F3→ 光标落在每行第三列内容起始处 - 按
Shift+→(或双击选中该列文本)→ 所有光标扩展选中各自列内容 - 输入
",再按End→",完成包裹
更稳的替代方案:用列选择(Shift+Alt 垂直拖拽)直接框出第三列区域,然后输入 ",所有行同步执行——前提是列严格对齐。一旦 CSV 有字段含逗号,就必须回归正则定位,否则列选择会偏移。
最后提醒一句:多光标模式下,任何方向键、删除、甚至鼠标点击都可能合并光标。想安全操作,就记住两个动作节奏——Alt+F3 后立刻输入,别犹豫;输完再调整,别边输边挪光标。

















