正则模式需手动开启,点击 .* 图标或按 alt+r 启用;删 console.log 要用 ^\sconsole.log(1);\s$ 避免误删;提取参数推荐 getuserinfo(([^)])) → getuserinfo({ $1 });跨文件替换须限定 where 路径并预览。) ↩

正则模式必须手动开启,否则所有表达式都当普通字符串
Sublime 默认关闭正则搜索——这不是 bug,是设计。你输 \d+、^$ 或 getUserInfo\(([^)]+)\),只要右下角那个 .* 图标还是灰色的,就一个字符都不会匹配上。
- 启用方式只有两种:点击查找面板(
Ctrl+F或Cmd+F)左下角的.*图标,或按Alt+R切换 - 替换面板(
Ctrl+H)和全局搜索(Ctrl+Shift+F)同样要单独点开.*,漏一次,$1就原样输出,不会被解析 - 图标变蓝才生效,建议养成“眼睛先扫图标,再敲正则”的习惯——很多“不匹配”问题,90% 出在这里
删 console.log 但不伤注释和字符串
直接搜 console.log 全删,大概率误删 // console.log() 或 'console.log(x)' 里的内容。正则没法理解语法上下文,只能靠结构约束来规避。
- 安全写法:
^\s*console\.log\([^)]*\);\s*$—— 锁定整行、吃掉前后空白、转义点号、禁止跨右括号、结尾带分号 - 想转成注释而非删除?替换填
// $0($0表示整行原始匹配),方便后续回滚 - 注意:它不处理模板字符串(
console.log`xxx`)或多行参数;真遇到,得加(?s)开启 dotall,但风险陡增,建议人工确认范围
提取函数参数并重构调用形式
比如把 getUserInfo(id) 改成 getUserInfo({ id }),字符串替换会漏掉空格、逗号、空参等变体,必须用捕获组精准提取。
- 基础匹配:
getUserInfo\(([^)]+)\)→ 替换为getUserInfo({ $1 });[^)]+比.*安全,防吞到下一个括号 - 兼容空参:
getUserInfo\(([^)]*)\)(*允许零次) - 兼容空格:
getUserInfo\(\s*([^)]*?)\s*\),*?是非贪婪,避免吃掉后面内容 - Sublime 不支持
(?P<name>)</name>命名组,别抄 VS Code 的写法;老实用()+$1最稳
跨文件批量替换前,路径过滤比正则本身更重要
搜 fetch( 改成 api.fetch(,结果把 node_modules 里也改了,构建直接报错——这不是正则写错了,是范围没锁住。
- 全局搜索(
Ctrl+Shift+F)的Where栏必须显式限定,例如:src/**/*.js(只改 src 下 JS)、!node_modules, !dist(排除黑名单) - 支持逗号分隔:
*.ts, *.js表示只搜这两种后缀 - 执行前务必点
Find All预览匹配列表,确认每条路径都合理;Replace All没撤回键,误操作只能靠 Git 恢复
最常被忽略的其实是作用域控制:默认正则对整个文件生效。若只想处理当前选中区域,请先选中文本再按 Ctrl+H,面板左下角会出现 In Selection 提示——否则一不小心就全局替换了。










