sublime正则搜索需手动启用.*图标,否则\d+等无效;删空行用^[ \t]*$而非^\s*$;全局替换须限定路径并预览。

正则模式没开,输啥都是白搭
Sublime 的正则搜索默认是关闭的,Ctrl+F 或 Cmd+F 打开查找框后,光输入 \d+ 或 ^$ 不会匹配任何东西——它当普通字符串在搜。
- 必须点击查找面板左下角(或右下角,视版本而定)的
.*图标,让它变蓝才算激活 - 快捷键
Alt+R可快速切换,但图标状态更直观,建议养成“先看再输”的习惯 -
Ctrl+H(替换)和Ctrl+Shift+F(全局搜索)同样要单独点.*,否则$1会被原样输出,不解析为捕获组 - 常见错误现象:写
console\.log\(.*?\)却零匹配 → 八成是.*没点亮
函数参数提取:为什么 [^)]+ 比 .*? 更安全
想把 getUserInfo(id) 改成 getUserInfo({ id }),关键在准确捕获括号内内容。用 .*? 看似省事,但遇到换行、嵌套或注释就容易“破界”;[^)]+ 明确限定“非右括号字符”,防误吞、避贪婪、天然抗跨行。
- 查找:
getUserInfo\(([^)]+)\) - 替换:
getUserInfo({ $1 }) - 若参数含空格或逗号(如
getUserInfo(a, b)),该写法仍成立 - 但遇到嵌套括号(如
fn(getUser())),Sublime 不支持(?R)递归,此时应改用[\s\S]*?+ 手动校验,或直接分步处理 - 务必先点
Find All预览所有匹配,避免把/* getUserInfo(id) */这类注释也卷进去
删空行 / 清行尾空格:别信 \s,它会吃换行符
\s 在 Sublime 中会匹配 \n 和 \r,导致 ^\s*$ 不仅删空行,还可能误删只有回车符的“假空行”,甚至破坏文件末尾结构。
- 删真·空行(不含任何字符):
^$(最严格) - 删含空格/Tab 的空行(推荐):
^[ \t]*$(显式限定,避开\s跨行风险) - 删行尾空格+Tab:
[ \t]+$,别用\s+$,否则可能吃掉末尾换行符,保存后文件少一行 - 执行前勾选
In Selection可限制范围,比如只处理当前选中的代码块,避免误改配置或注释
全局替换炸库:Where 里填 * 就等于裸奔
用 Ctrl+Shift+F 全局替换时,Where 字段填 * 是最危险操作——搜 log\(.*?\) 替换成 console.log$1,可能把你 node_modules 里的第三方库全干掉,甚至改到 README.md 里的示例代码。
- 精准限定路径:
src/**/*.js(匹配src下所有.js文件) - 多后缀过滤:
*.ts, *.js(逗号分隔,不加空格) - 排除目录:
!node_modules, !dist(前面加!) - 替换前一定点
Find All,看右下角预览列表是否每条路径都合理;Replace All没撤回键,误操作只能靠 Git 恢复
最常被忽略的不是语法,而是开关状态和作用范围——点错一次 .*,或漏掉一个 !,就可能让重构变成救火。










