Sublime Text 可用正则 console.log([^)]*)|debugger|print([^)]*) 一次性删除常见调试语句;需转义点、用 [^)]* 避免误匹配,跨行时启用 (?s) 并分步处理;保留 warn/error 需精确排除,自定义函数要额外添加;操作前须预览、过滤路径、提交 Git。

匹配并删除常见的调试语句(console.log、debugger、print)
Sublime Text 的正则查找能一次性清理多种调试痕迹,关键是写对模式。默认开启「正则模式」(.* 按钮亮起),然后输入:
console.log([^)]*)|debugger|print([^)]*)。注意
console.log 中的点要转义,否则会匹配任意字符;[^)]* 表示“非右括号的任意内容”,比 .*? 更安全,避免跨行或误吞闭合括号。
常见错误是直接写 console.log(...) 不转义点,结果匹配到 consoleXlog 这类不存在的字符串;或者用 .* 而没加 ?,导致从第一个 ( 一直吃到文件末尾最后一个 )。
处理带换行的多行 console.log(含模板字符串)
标准正则默认不跨行,而现代 JS 中 console.log 可能拆成多行,或用反引号包裹长文本。这时需启用「跨行匹配」:勾选 . matches newline(即 (?s) 标志),再用更宽松的模式:
console.logs*([^)]*?(?<!\))。但此法仍有风险——遇到转义括号
) 会提前结束,真正稳妥的做法是分两步:
- 先删掉所有单行
console.log和debugger - 再手动检查剩余含反引号或换行的块,用 Sublime 的「多光标编辑」逐个删
${...})无语法感知,纯靠正则容易误删。
排除生产环境保留的 console.warn 和 console.error
很多项目只希望删 log,但留 warn 和 error。此时不能简单用 console..*,得精确限定:
console.log([^)]*)|console.info([^)]*)|debugger。注意
console.warn 和 console.error 不在其中。如果项目还用了自定义调试函数(如 logDebug()),得额外加上:logDebug([^)]*)。漏掉这类自定义调用,清理就不彻底。
另一个坑是大小写:有些代码写成 Console.log 或 CONSOLE.LOG,若需兼容,正则开头加 (?i),但要确认团队规范是否允许这种写法——通常应视为代码风格问题,而非正则该兜底的范围。
批量操作前必须做三件事
正则替换是不可逆的,尤其跨文件操作时:
- 先用
Find All(快捷键alt+enter)预览所有匹配项,确认没误伤正常代码 - 在项目根目录右键 →
Find in Files...,设置Where:为*.js,*.ts,避免搜到node_modules或构建产物 - 替换前务必提交 Git 快照,或用 Sublime 的
File → Save All确保所有已修改文件都已保存,否则部分文件可能被跳过
!node_modules,结果把依赖包里的 console.log 也清了,下次 yarn install 又恢复,白忙一场。

















