Ctrl+Shift+F打不开是因未进项目模式或快捷键被劫持;搜整个项目Where字段必须填“.”;正则替换需用$1引用捕获组、(?s)匹配换行;Replace All后须手动Save All。

Ctrl+Shift+F 打不开?先确认项目模式和快捷键没被劫持
Sublime 的全局搜索根本不能在单文件下工作——Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS)面板灰显、无响应、结果为空,90% 是因为没进项目模式或快捷键被插件抢了。
- 看左下角状态栏:必须显示类似
~/my-project/的路径;没有就说明只是双击打开了一个文件,得用File → Open Folder…重新加载整个文件夹 - Mac 用户注意:
Cmd+Shift+F常被系统 Spotlight 占用,去「系统设置 → 键盘 → 快捷键 → Spotlight」关掉 - 打开
Preferences → Key Bindings – User,搜"ctrl+shift+f"或"cmd+shift+f",删掉所有冲突项;不确定谁占用了?去Key Bindings – Default底部确认原生绑定是否存在:{"keys": ["ctrl+shift+f"], "command": "show_panel", "args": {"panel": "find_in_files"}}
Where 字段填什么才真正搜整个项目?别信“留空=全搜”
留空不是搜全部,它等价于只搜当前已打开的标签页——这是最常踩的坑,填错一个字符就漏掉 90% 文件。
- 搜整个项目:必须填
.(单个英文点),不是./,也不是./src - 只搜
src/下所有文件(含子目录):填src/,不用加**或./ - 排除
node_modules和dist:写成., -node_modules/, -dist/(统一用正斜杠/,Windows 上也一样) - 限定文件类型:如
src/ *.js,*.ts(逗号分隔,不支持空格) - 搜所有已打开但未保存的标签页:唯一可靠关键字是
open_files,官方文档几乎不提,但真有用
正则替换总出错?盯住 .、$1 和换行符
Sublime 的正则引擎是 PCRE 风格,但替换语法是自研的,和 Python、JS 都不一致。开错开关、用错语法,Replace All in Files 就是高危操作。
-
.默认不匹配换行符:哪怕点了.*图标,foo.*bar也找不到foo\nbar;真要跨行,必须加(?s)前缀,例如(?s)"content": "(.*?)" - 捕获组引用只能用
$1、$2,不能用\1——后者在 Sublime 里是字面量,不会被解析 - 特殊字符必须转义:查
console.log()要写成console\.log$$[^)]*$$,否则.和()会被当元字符处理 - 点右下角
.*图标必须变蓝才算正则启用;Ctrl+F、Ctrl+H、Ctrl+Shift+F三处开关互相独立,每处都得单独点
Replace All 后内容丢了?这不是 Bug,是设计
Sublime 不会自动保存被修改的文件——所有改动都在内存里,关掉就清空,且无任何提示,也没有跨文件撤销历史。
- 替换后必须手动执行
File → Save All,或快捷键:Ctrl+K松开 → 再按Ctrl+B(Windows/Linux),Cmd+K→Cmd+B(macOS) -
Ctrl+S只保存当前激活标签页,对批量替换完全无效 - 务必先点
Find All,确认结果面板列出了全部目标条目,再点Replace All in Files;数字异常大(比如上千)就先暂停,检查是否路径或正则太宽泛 - 高风险操作前,建议先
git add -A && git commit -m "before global replace"—— 这比任何撤销都可靠


















