ctrl+shift+f(windows/linux)或cmd+shift+f(macos)是唯一真正的跨文件替换入口;where填“.”扫描整个项目,需手动开启正则、用$1引用捕获组,replace all后必须save all。

Ctrl+Shift+F(或 Cmd+Shift+F)才是真正的跨文件替换入口
按 Ctrl+H 或 Cmd+H 只作用于当前文件的可见区域,折叠行、被排除的代码块、注释里的匹配项都会被跳过——这不是“批量”,是假批量。真正能覆盖整个项目目录的,只有 Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS)。这个面板一打开,默认搜索范围就是已加载的项目根目录(前提是已用 Project → Add Folder to Project… 加载过),不是当前文件夹,也不是桌面。
Where 框填什么决定你改的是谁
很多人点了 Ctrl+Shift+F 后直接输内容点 Replace All,结果把 node_modules 里第三方库的 console.log 全干掉了。关键就在 Where 框:
- 填
.:表示当前项目根目录下所有可读文件(含隐藏文件) - 填
src/**/*.js:只搜src下所有.js文件(Sublime 支持 glob) - 填
*, -node_modules/, -dist/, -*.min.js:逗号分隔,减号排除,路径必须用正斜杠/,即使在 Windows 上也别写 - 留空:等价于
<project></project>,但不如显式写清楚,避免误判
正则模式不手动开,.* 就是普通点号
写 d+ 却没匹配到数字?写 ^import 却搜出一堆非首行内容?大概率是没点右下角那个 .* 图标。它不是全局开关,而是每个面板(Ctrl+F、Ctrl+H、Ctrl+Shift+F)各自独立的状态。必须在 Ctrl+Shift+F 面板里单独点一次,图标变蓝才算启用。另外:
- 捕获组引用用
$1、$2,不是 - 想匹配换行?得加
(?s)前缀,比如(?s)"content": "(.*?)" - 反斜杠路径如
C:ooar要写成C:\foo\bar,Sublime 不支持原始字符串前缀r""
Replace All 之后,改动还在内存里
点完 Replace All,所有被改的文件标签页右上角出现星号 *,这是 Sublime 在提醒:这些变更只是缓存在内存中,还没写入磁盘。关掉窗口、崩溃、断电,全丢。必须执行 File → Save All,或者更稳妥地按 Ctrl+K 松开再按 Ctrl+B(macOS 是 Cmd+K → Cmd+B)。别依赖“关闭时提示保存”——批量操作后若误点“取消”,没有撤销历史可回溯。











