where字段留空不搜全项目,必须手动填“.”才搜整个项目;填“src/”搜子目录;排除用“., -node_modules/, -dist/”格式;替换后须手动save all。

Ctrl+Shift+F 的 Where 字段必须手动填,留空不等于搜整个项目
很多人以为 Ctrl+Shift+F 打开面板后直接输关键词就能搜全项目,结果为空——根本原因是 Where 输入框留空时,Sublime 默认只搜「当前已打开的标签页」,不是项目目录。这和直觉相反,但确实是设计行为。
正确做法是显式填写范围:
- 搜整个项目:填
.(单个英文点),不是./、./或空着 - 只搜
src/及其子目录:填src/(结尾斜杠不能少) - 多路径组合:用逗号分隔,如
src/, tests/, *.py - 排除目录:加减号前缀,如
., -node_modules/, -dist/
注意:Where 不支持正则,只认 glob 语法(* 和 **),写 *.(js|ts) 会失效。
文件名过滤和排除规则会静默生效,且优先级高于 Where 设置
folder_exclude_patterns 和 file_exclude_patterns 是全局开关,一旦在 Preferences → Settings – User 里配置,它们会拦截所有搜索入口(Ctrl+P、Ctrl+Shift+F、Ctrl+Shift+R),哪怕你在 Where 里明确写了 node_modules/,也会被跳过。
常见误配场景:
- 把
"*.log"加进file_exclude_patterns,结果Where填logs/也搜不到任何日志文件 - 项目设置里写了
"node_modules",但又想临时搜里面某个库的类型定义,这时Where再怎么写都无效 -
Ctrl+P能搜到node_modules/react/index.js,是因为它绕过排除规则;但Ctrl+Shift+F不行——这是二者最本质的区别
排查方法:临时注释掉 Settings – User 中的排除项,看搜索是否恢复。
搜中文或 Unicode 字符前,务必确认右下角编码是 UTF-8
状态栏显示的编码不是摆设。如果文件实际是 UTF-8,但 Sublime 误判为 GBK 或 ISO-8859-1,会导致:
- 中文关键词搜不到,即使内容完全匹配
- 启用
.*(正则模式)后报invalid byte sequence - 搜索结果中中文路径显示乱码,双击打不开
解决方式很简单:
- 打开一个目标文件,右下角点击编码名称(如
UTF-8或Western (Windows 1252))→ 选Reopen with Encoding → UTF-8 - 如果批量文件都有此问题,可统一转换:选中多个标签页 → 右键 →
File Encoding → Convert to UTF-8 - 永久避免:在
Settings – User加上"default_encoding": "UTF-8"
Replace All in Files 后必须手动 Save All,否则修改全部丢失
这是最容易被忽略的设计细节:Replace All in Files 的结果只是暂存在内存里,不会触发文件修改标记,也不会自动保存。关掉面板、切走标签页、甚至重启 Sublime,都会清空所有未保存的替换。
正确流程只有两步:
- 先点
Find All,确认底部结果列表列出了全部预期匹配项 - 再点
Replace All,然后立刻执行File → Save All(快捷键:Ctrl+K松开 →Ctrl+B,macOS 是Cmd+K→Cmd+B)
Ctrl+S 只保存当前激活标签页,对批量替换无效——这点和多数编辑器不同,得刻意改习惯。











