正则批量替换需精准控制边界:console.log→debugger须用^sconsole.log(1);?并启用Match line breaks;下划线转驼峰需分步处理3/2/1个下划线,用luu等;删单行注释用s//.R?;捕获组$1生效需确认面板开启正则且括号匹配;修改后务必Save All。) ↩

怎么用正则批量替换 console.log 为 debugger
直接搜 console.log 并替换,大概率会误伤注释、字符串或 JSX 模板里的内容。必须加边界控制和上下文判断。
- 先启用正则:点查找面板右下角
.*图标(或按Alt+R) - 查:
^s*console.log([^)]*);?——^和s*锁定行首或缩进后,防止匹配到myconsole.log,.和(必须转义 - 替:
debugger; - 务必勾选
↩ Match line breaks(否则^不作用于每行) - 替换前点
Find All,看结果是否全在代码行里,没混进//或/*后面
怎么把 user_name 这类下划线命名转成驼峰 userName
不能一次全换,Sublime 不支持递归替换或大小写转换函数,得按“下划线数量”从多到少分步来,否则 user_name_first 会被错切成 userNameFirst 再错切成 userNamefirst。
- 先处理含 3 个下划线的:
Find:(w*)_(w*)_(w*)_(w*)→Replace:luuu - 再处理含 2 个的:
(w*)_(w*)_(w*)→luu - 最后处理含 1 个的:
(w*)_(w*)→lu -
l表示小写首字母,u表示大写首字母,只对捕获组第一个字符生效 - 别用
user_name做词边界——Sublime 把_当单词字符,在user_name两侧都成立,会错误匹配username
怎么安全删掉所有单行注释但保留后面代码
常见错误是写 //.* 就完事,结果吞掉整行甚至跨行(如果开了 .* matches newline),或者漏掉行首空格导致格式错乱。
- 查:
s*//.*$——s*匹配前面可能的缩进,$锚定行尾,避免吃掉下一行 - 替:留空(即删除整行注释部分)
- 必须勾选
↩ Match line breaks,否则$不认 Windows 的,建议统一用R替代:s*//.*R? - 如果文件混用 LF/CRLF,
$行为不稳定,优先用R - 执行前用
Find All扫一眼,确认没把http://example.com这种 URL 当注释干掉
为什么 $1 捕获组总是不生效
不是语法写错,就是开关没开全——Sublime 的正则开关是「面板级」的,Ctrl+H、Ctrl+Shift+F、Ctrl+Shift+H 三个面板的 .* 状态互不影响。
- 检查当前面板右下角
.*是否高亮(变蓝),没点就等于没开正则 - 确保查找内容里有
(),且左括号顺序数对得上:比如(a)(b(c))中,$1=a,$2=b(c),$3=c - 替换框里只能用
$1,不能用(后者在旧版可能兼容,但新版已弃用) - 如果原文含反斜杠(如路径
C:ooar),查找框要写成C:\foo\bar,Sublime 不支持原始字符串r"" - 中文、emoji 等 Unicode 字符无需额外转义,但文件编码必须是 UTF-8(右下角状态栏显示
UTF-8)
最常被跳过的动作是 Save All —— Replace All 只改内存缓存,关窗口前不按 Ctrl+K → Ctrl+B(Win/Linux)或 Cmd+K → Cmd+B(macOS),所有改动彻底丢失,没有历史可回溯。


















