Ctrl+Shift+F(Windows/Linux)或Cmd+Shift+F(macOS)是Sublime Text跨文件批量替换的唯一入口,需在项目模式下于Where框填“.”启用全项目扫描,正则替换用$1且须手动开启.*模式,Replace All后须手动Save All并提前git commit。

Ctrl+Shift+F 是唯一能跨文件批量替换的入口
按 Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS)打开「Find in Files」面板,不是 Ctrl+H、也不是右键菜单里的“在文件中查找”——后者只是快捷入口,底层不触发真正的跨文件扫描。如果快捷键没反应,先检查 Preferences → Key Bindings – User 是否被插件劫持(比如 Vintage 或 SideBarEnhancements 占用了该组合键)。
Where 框填什么决定你搜到哪,留空 ≠ 全项目
Where 框控制搜索范围,它不是路径补全框,而是 Shell 风格过滤表达式。填错一个字符,可能漏掉 90% 的文件。
- 整个项目:填单个英文点
.(不是./,也不是空) - 只改 JS:用
src/**/*.js(必须勾选Regular Expression才支持**递归) - 排除 node_modules 和 dist:
., -node_modules/, -dist/(逗号分隔,减号前缀) - Linux/macOS 下路径区分大小写:
./SRC和./src是两个目录
注意:默认 Where 留空时,Sublime 只搜已打开的标签页,不是项目目录;且右下角状态栏必须显示项目路径(如 ~/my-project/),否则说明没加载项目根目录,Where 框会灰显。
正则替换必须手动开 .*,且 $1 才有效,\1 会失效
右下角 .* 图标必须点成蓝色(或按 Alt+R 切换),否则 \b、\d、^、$ 全部当普通字符处理。所有面板(Ctrl+F、Ctrl+H、Ctrl+Shift+F)的 .* 开关各自独立,必须分别点开。
- 捕获组引用只能用
$1、$2;\1在 Sublime 里是字面量,不会被解析 - 想匹配换行符,得加
(?s)前缀,例如(?s)foo.*bar才能匹配foo\nbar - 括号、点号等元字符必须转义:
console\.log$$[^)]*$$才能匹配函数调用 -
\buser_id\b对下划线不敏感,仍会匹配username;更稳写法是(?
Replace All 后不会自动保存,关掉未保存标签页就丢修改
点 Replace All 后所有改动都在内存里,文件标签页出现 * 是正常现象。Sublime 不会自动保存被修改的文件,也没有跨文件撤销历史——点了就等于把所有文件变成“脏状态”。
- 必须手动按
Ctrl+K松开,再按Ctrl+B(Windows/Linux)或Cmd+K→Cmd+B(macOS)执行全部保存 - 高风险操作前务必
git commit,例如git add -A && git commit -m "before global replace" - 点
Find All后先看右下角命中数,上千就暂停检查上下文,双击列表项跳转确认是否在function getData()或调用处,而非字符串或注释中 - GBK 编码文件默认被跳过,右下角显示
GBK就得先Save with Encoding → UTF-8 with BOM
最常被忽略的不是怎么点按钮,而是哪些地方根本不会进你视野:变量含 $(如 $api)必须写成 \$api\b,否则 $ 被当行尾锚点;下划线 _ 是 Sublime 默认 word separator,api_v2 双击只选中 api,要么删设置里的 _,要么直接用 \bapi_v2\b 正则锚定。

















