sublime全局搜索替换需先通过file→open folder进入项目模式,where填“.”才搜全项目,正则启用.*模式、用$1引用、手动save all,并提前git commit。

Sublime 的全局搜索替换不是“输完就点 Replace All”就能安全生效的操作——它默认不递归子目录、不自动排除 node_modules、不保存修改、不校验文件编码,盲目执行大概率改坏依赖或漏掉关键文件。
Ctrl+Shift+F 灰了或搜不到结果?先确认是否进了项目模式
Sublime 只在已加载文件夹(Project)下才激活跨文件搜索。单文件打开时,Ctrl+Shift+F 面板会灰显或只显示 “Open Files”。
- 看左下角状态栏:是否显示类似
~/my-project/的路径?没有就说明没进项目模式 - 关掉所有单文件标签页,用
File → Open Folder…重新选中项目根目录 - 侧边栏出现完整树形结构,才是生效标志;
Add Folder to Project容易叠加路径,不推荐 - Mac 用户注意:
Cmd+Shift+F常被系统 Spotlight 占用,需在「系统设置 → 键盘 → 快捷键」里禁用
Where 字段填什么才真正搜整个项目?别信“留空”和“./”
Where 不是 shell 路径,而是前缀匹配器。填错一个字符,90% 的文件就搜不到。
- 搜整个项目:必须填单个英文点
.(不是./,也不是留空) - 只搜
src/下所有文件:填src/(自动递归子目录,不用写src/**/*) - 排除干扰目录:写成
., -node_modules/, -dist/, -build/, -*.min.js(统一用正斜杠/,大小写敏感) - 限定多类型:用逗号分隔,如
./src/**/*.ts, ./tests/**/*.ts(不支持*.+(ts|tsx)这类正则语法)
正则替换总出错?盯住 .* 图标、$1 和 (?s)
Sublime 的正则开关是面板级独立的:Ctrl+F、Ctrl+H、Ctrl+Shift+F 三处的 .* 图标必须各自点开,灰色 = 关闭,蓝色 = 生效。
- 捕获组引用必须用
$1,不是\1;括号、点号等元字符必须转义,例如console\.log$$[^)]+$$ -
.默认不匹配换行符,想跨行必须加(?s)前缀,否则foo.*bar永远找不到foo\nbar - 删独立的
console.log行:查找^[ \t]*console\.log$$[^)]*$$;[ \t]*$,替换留空 - 把
getUser(id)改成getUser({ id }):查找getUser$$([^)]+)$$,替换为getUser({ $1 })(括号要转义)
Replace All 后文件没变星号?这不是 Bug,是设计上就不保存
点了 Replace All in Files 后,所有改动都只是内存中的脏状态,关掉未保存的标签页,修改直接丢弃。没有跨文件撤销历史。
- 替换前务必执行:
git add -A && git commit -m "before global replace" - 替换后立刻按
Ctrl+K松开,再按Ctrl+B(Windows/Linux),macOS 是Cmd+K → Cmd+B - 别依赖右上角星号
*提示——它不强制你保存,也不阻止你直接关窗口 - 项目含大
node_modules时,不关index_files,搜索会卡死或漏文件;在Preferences → Settings里加一行:"index_files": false,必要时清缓存目录
最常被忽略的其实是单词边界的可靠性:\buser_id\b 在 Sublime 里对 _ 不敏感,仍会匹配到 username;更稳的是用 (? 或加空格上下文限定。











