Sublime Text的Find in Files卡顿主因是index_files默认扫描node_modules等大目录,解决方法是用户设置中添加{"index_files": false},并正确配置Where框路径与排除规则。

Find in Files卡住,90%是index_files在后台扫node_modules
Sublime 的 Ctrl+Shift+F(macOS 为 Cmd+Shift+F)不是“搜当前项目”,而是默认配合 index_files 全量索引后搜索。一旦项目里有 node_modules、.git 或 dist,它就会默默把几 GB 文件读进内存建倒排索引——此时你点搜索框,UI 已经卡死,但进程还在后台硬扛。
最直接的解法:打开 Preferences → Settings – User,加这一行:
{"index_files": false}
关掉后,Ctrl+P(按文件名跳转)和 Ctrl+Shift+F(文本内容搜索)依然可用,只是 Ctrl+Click 跳转定义、Find All References 会失效——对大多数批量替换场景无影响。
-
folder_exclude_patterns在用户设置里写无效,它只控制侧边栏显示,不阻止索引扫描;必须写进项目配置(Project → Edit Project)或右键目录 →Add to Project Exclude List - 某些 LSP 插件(如
pylsp)会无视排除规则继续扫描,所以"index_files": false是兜底动作,不是可选项 - 清缓存能临时缓解:删掉
~/.config/sublime-text-3/Index/(Linux/macOS)或%LOCALAPPDATA%\Sublime Text 3\Index\(Windows)
Where框写法不对,搜不到或搜太慢
默认的 Where 输入框不递归子目录,也不自动排除构建产物。写成 ./src 只搜一级,./src/* 不包含 ./src/utils/foo.js;而没加排除项时,它真会去 ./node_modules/react-dom 里逐行 grep。
正确写法示例(粘贴进 Where 框即可):
./src/**/*.js,./src/**/*.ts -./dist -./build -./node_modules
- 双星号
**才表示递归子目录;单星号*只匹配当前层 - 逗号分隔多个路径模式,不支持
*.{js,ts}这类 shell 通配 - 减号
-开头是排除,注意路径要和项目根相对,且不能带尾部斜杠(写-./node_modules/会失效) - 如果只改一类文件,直接限定后缀比全项目搜更稳:
./src/**/*.py比.安全得多
替换误改、漏改,根本原因是没设单词边界
想把 id 替成 identifier,结果 user_id 变成 user_identifier,identity 变成 identifiertity——这不是正则写错了,是 Sublime 默认不认单词边界。
两种可靠做法:
- 勾选搜索面板里的
Match Whole Word(快捷键Alt+Enter),它等价于正则\bid\b - 必须用正则时,手动写
\bid\b,别只写id;\b表示词边界,能拦住ids、client_id等干扰项 - 替换前务必点
Find All,看右下角命中数是否合理;上千处就先停手,检查路径或正则是否过宽
搜索卡顿还持续?检查这三项隐性负担
即使关了 index_files,搜索仍慢,大概率是以下三个默认行为在拖后腿:
-
detect_indentation:打开文件时从头扫到尾猜缩进,对日志/JSON 纯属浪费;在用户设置里加"detect_indentation": false -
draw_white_space:高亮空格/制表符会触发额外渲染;设为"draw_white_space": "none" -
auto_complete:搜索时弹出补全建议框,尤其在大项目里会查符号表;关掉"auto_complete": false
这些参数不显眼,但叠加起来会让搜索响应延迟从毫秒级拉到秒级。改完不用重启,保存即生效。
真正卡死时,别反复点重试——先用 --safe-mode 启动验证是否插件冲突,再看是否系统级 I/O 问题。性能优化不是堆参数,而是切断那些“默认开启却极少被需要”的后台动作。



















