应将 find in files 的 where 字段设为 ,并确保项目已保存为含 "folders" 定义的 .sublime-project 文件;还可通过设置 "find_in_files_where": "" 设为默认值。

怎么让 Sublime 的「Find in Files」只搜当前项目?
默认情况下,Sublime 的 Find in Files 会把整个打开的文件夹(甚至没加到侧边栏的路径)都扫一遍,尤其当你用 Project → Add Folder to Project 加了多个目录时,很容易误搜到无关代码。关键不是“关掉全局”,而是**显式限定搜索范围为当前 project 的 folders**。
实操上,得靠 Where 输入框控制——它不只接受路径,还支持特殊占位符:
-
./表示当前活动文件所在目录(注意:不是 project 根目录,容易误判) -
<project></project>才是正解,它严格对应Project → Edit Project里定义的"folders"列表 - 如果项目没保存(即无
.sublime-project文件),<project></project>会退化为当前打开的文件夹,这点要警惕
为什么改了 Where 还是搜到外面的文件?
常见现象:明明填了 <project></project>,结果搜索结果里冒出某个已关闭但之前打开过的文件夹里的匹配项。这不是 bug,是 Sublime 的缓存机制在作祟——它会把最近打开过的文件路径保留在「快速打开」历史里,而 Find in Files 有时会悄悄复用这些路径。
解决办法很直接:
- 确保项目已保存为
.sublime-project文件(哪怕空内容也行,只要存在) - 关闭所有非本项目的文件夹:菜单
Project → Close Project,再重新Open Project - 别依赖「上次打开的文件」自动恢复,手动清一次
File → Close All再开项目
Find in Files 的 Where 字段还能填什么?
除了 <project></project>,实际能用的限定符有限但够用:
-
src/或./src/:相对当前文件位置,但只对单文件有效,项目多根目录时不可靠 -
/full/path/to/src:绝对路径,适合临时排查,但无法跨环境复用 -
!*.log, !node_modules/:支持排除,但注意语法是逗号分隔、无空格,且!后不能有斜杠(!node_modules✅,!node_modules/❌) - 别写
**/*.js—— Sublime 不支持 glob 递归通配符,会当字面量处理
插件方案靠谱吗?比如「Project Find」?
原生功能已足够,装插件反而增加干扰。像 Project Find 这类插件本质只是帮你自动填 <project></project> 到 Where,但一旦项目结构变动(比如删了某个 folder 又重加),插件不会实时同步,你还是得手动检查 Where 值是否准确。
真正省事的做法是:把 <project></project> 设为默认值。修改用户设置 Preferences → Settings – User,加这一行:
"find_in_files_where": "<project>"
不过要注意:这个设置会影响所有项目,如果你偶尔需要搜系统级配置(比如全局 npm 包),就得临时删掉这行或手动覆盖 Where 字段。
最麻烦的其实是项目没显式定义 folders——这时候 <project></project> 就是摆设。务必确认 .sublime-project 文件里有类似这样的结构:
{
"folders": [
{
"path": "/your/project/root"
}
]
}










