Ctrl+Shift+F(Windows/Linux)或Cmd+Shift+F(macOS)是Sublime Text中唯一能触发全项目替换的快捷键,需配合Where字段填“.”等正确配置才能真正跨文件搜索替换。

Ctrl+Shift+F 是唯一能触发全项目替换的快捷键
Sublime Text 没有“一键全项目替换”按钮,Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS)是打开真正跨文件搜索通道的唯一入口。按 Ctrl+H 然后点 Replace All,只改当前文件;右键菜单里的“在文件中查找”也常不走底层通道,结果漏目录、跳过子文件、甚至不读 node_modules 外的任意路径。
常见卡点:
-
Ctrl+Shift+F按了没反应?先去Preferences → Key Bindings – User搜"ctrl+shift+f",删掉插件劫持项 - 面板打开后
Where:字段灰显或只显示Open Files?说明没加载项目——必须先执行File → Open Folder…选中根目录 - 菜单栏
Find → Find in Files有时被插件覆盖,别依赖它
Where 填 “.” 才算真扫整个项目
Where 不是路径补全框,是 Shell 风格过滤表达式。留空 ≠ 全项目,它等价于“只搜当前已打开的标签页”。填错一个字符,90% 的文件就进不了扫描范围。
正确写法:
- 整个项目:
.(就一个英文点,不是./,也不是./src) - 只改业务 JS:
./src/**/*.js(双星号**才递归子目录) - 排除构建产物:
., -node_modules/, -dist/, -build/(逗号分隔,减号开头) - Windows 上也必须用正斜杠
/,.\src会失效 -
./SRC和./src是两个目录,大小写敏感
正则替换必须开 .* + 用 $1,不能用 \1
Sublime 的正则引擎是 PCRE 风格,但替换语法是自研的:. 默认不匹配换行符,捕获组引用只能用 、, 是字面量,不会被解析。
实操要点:
- 先点右下角
.*图标(变蓝才算激活),或按Alt+R切换 - 跨行匹配要加
(?s)前缀,比如(?s)foo.*bar才能匹配foo\nbar - 想把
getUser(id)改成getUser({ id }):查找getUser$$([^)]+)$$,替换为getUser({ $1 })(括号需转义) - 删独立的
console.log行:查找^[ \t]*console\.log$$[^)]*$$;[ \t]*$,替换留空
Replace All 后必须手动 Save All,否则全丢
Sublime 不会自动保存被修改的文件——所有改动都在内存里。关掉未保存的标签页,修改直接丢弃。没有跨文件撤销历史,点了 Replace All 就等于把所有文件变成“脏状态”。
安全操作链:
- 替换前先
git add -A && git commit -m "before global replace" - 确认
Find All结果数量合理(右下角显示命中数),上千就暂停检查 - 替换后立刻按
Ctrl+K松开,再按Ctrl+B(Windows/Linux)或Cmd+K→Cmd+B(macOS)执行全部保存 - 别信右上角星号 * 提示——几十个标签页没人能盯全
- 大文件(>10MB)可能被跳过,右下角看编码是否为
UTF-8;GBK 文件得先右键转码
最易忽略的是 index_files 设置:项目含大 node_modules 时,不关它,搜索会卡死或漏文件。可在 Preferences → Settings 中加 "index_files": false。


















