sublime中正则与多重选择须协同使用:ctrl+d仅匹配字面量,需正则加\b等约束精准定位;alt+f3全文件暴力匹配风险高,ctrl+shift+l适合结构化文本;正则替换须开模式、转义元字符、核对捕获组编号,并配置folder_exclude_patterns防误改。

Sublime 的正则表达式和多重选择不是互斥功能,而是必须配合使用才能安全批量操作;单独用正则易误改,只靠多重选择又难覆盖跨作用域或非字面匹配的场景。
为什么 Ctrl+D 选中后还要开正则替换
Ctrl+D 只能匹配完全相同的字符串,比如变量名 user_id 出现在注释、字符串、函数名里都会被一并选中。而正则可以加约束:用 \buser_id\b 确保只匹配独立单词,再配合 Match Case 避免把 UserId 也卷进来。
- 实际操作中,先用
Ctrl+D快速选中几个明显位置,确认上下文是否合理 - 再按
Ctrl+H呼出替换面板,手动输入\buser_id\b,勾选.*和Whole Word - 点
Find All预览所有匹配项——这一步不能跳,否则可能漏掉隐藏在字符串里的同名字段
Alt+F3 和 Ctrl+Shift+L 的适用边界
Alt+F3 是暴力全文件匹配,适合重命名全局常量(如 API_TIMEOUT),但对局部变量风险极高;Ctrl+Shift+L 是结构化多光标,适合处理格式统一的文本块(如日志行、CSV字段),但它不识别语义,只认换行符。
- 想重命名函数参数?别用
Alt+F3,先用Ctrl+Shift+M选中括号内内容,再Ctrl+D逐个选参数名 - 想给每行末尾加逗号?用
Ctrl+Shift+L后直接输,,比写$正则更稳 -
Ctrl+Shift+L后如果某行末尾有空格,光标会落在空格后而非行尾——得先用^\s*$清空行再操作
正则替换时最常踩的三个坑
正则模式没开、元字符没转义、捕获组编号错位——这三个问题占了 80% 的失败案例。
- 写
console.log(...)替换时,必须写成console\.log\([^)]*\),否则.匹配任意字符,(被当成分组起始 - 用
$1引用捕获组时,确保查找框里真有(...),且括号是成对的;多层嵌套时优先用$2、$3而非猜编号 - 跨文件替换前,务必检查
folder_exclude_patterns是否已配置在.sublime-project里,否则 node_modules 下的同名变量会被一起改掉
真正难的不是写出正则,而是判断哪一段该用多重选择、哪一段该交由正则兜底——比如重命名一个类成员变量,得先用 Ctrl+Shift+M 选中整个方法体,再在其中用 \bthis\.prop\b 查找,而不是无差别扫全文件。











