indexing status长期不动是索引线程被阻塞,常见于二进制文件、超长行日志或插件抢夺句柄;应立即执行rebuild index或关闭index_files,并清理cache、index、local三目录以根治。

Indexing Status 一直不动,说明索引线程卡在文件扫描上
Sublime Text 显示「Indexing Status: X files」却长期不动,不是进度慢,而是索引线程被阻塞了——常见于遇到二进制文件(如 PNG、PDF)、超长行日志、编码异常的文件,或插件(如 GitGutter、SublimeLinter)在后台抢夺文件句柄。它不会自动跳过,也不会报错,只会把 CPU 占满、内存持续涨到 2GB+,UI 完全冻结。
立刻生效的办法只有两个:Rebuild Index 强制清空重来,或直接关掉索引源头。别等「它自己好起来」,那通常意味着你得重启编辑器并丢失未保存内容。
-
Ctrl+Shift+P输入Index Files→ 选Rebuild Index:这是最安全的“软重置”,会丢掉旧索引但保留项目结构 - 右键侧边栏中可疑目录(如
node_modules、dist、assets)→Add to Project Exclude List:实时生效,比改配置快 - 临时禁用
GitGutter和SublimeLinter:它们会在索引期间反复调用外部命令,极易形成死锁
关 index_files 是最快止痛法,但得清楚代价
90% 的索引卡死都源于 index_files 默认为 true,而 Sublime 对整个项目目录递归 stat(),遇到几十万文件的 node_modules 或图片目录,根本扛不住。关掉它,索引状态立刻消失,内存回落 40%–60%,UI 恢复响应。
但副作用非常明确:Ctrl+R(跳转函数定义)、Find All References、Goto Definition 全部失效;Ctrl+P 仍可用,但只搜已打开文件名和符号,不搜未打开文件的内容。
- 改
Preferences → Settings – User,加这一行:"index_files": false - 必须完全退出 Sublime(不是 Reload Settings),再启动才生效
- 如果还想保留部分搜索能力,配合
"folder_exclude_patterns": ["node_modules", ".git", "dist"],比全关更精细
项目级排除比全局设置更安全,尤其 Monorepo 场景
在 Monorepo 中,packages/a/node_modules、packages/b/dist 这类嵌套路径会被重复扫描,index_files: false 虽然快,但会一刀切掉所有跳转能力。更好的做法是保留索引,但精准控制范围。
执行 Project → Edit Project,在 JSON 中写明哪些目录该索引、哪些必须跳过:
{
"folders": [
{
"path": "src",
"follow_symlinks": true
},
{
"path": "packages/core",
"follow_symlinks": true
}
],
"index_files": true,
"folder_exclude_patterns": ["node_modules", "dist", "build", "public", "assets"],
"file_exclude_patterns": ["*.log", "*.png", "*.jpg", "*.zip"]
}
注意:folder_exclude_patterns 必须写在项目配置里,用户设置中的同名项对已有项目无效;path 值是相对于项目根目录的相对路径,不能用绝对路径。
缓存残留才是卡死反复发作的真凶
很多人关了 index_files、清了设置,过两天又卡——问题不在运行时,而在 Cache、Index、Local 三个目录里的旧状态没清干净。尤其是 LSP 类插件(如 LSP-pyright),它的符号数据库一旦损坏,重启后照样加载失败、CPU 拉满。
关掉 Sublime 后,手动清理以下路径(Windows 示例):
-
%APPDATA%\Sublime Text\Cache\:删整个文件夹,或按插件名搜索(如pyright、texlab)整删 -
%APPDATA%\Sublime Text\Index\:这是符号索引数据库,损坏后Ctrl+P会假响应 -
%LOCALAPPDATA%\Sublime Text\Local\:删Session.sublime_session和Auto Save相关文件,防止崩溃恢复拖慢启动 -
Packages\User\下对应插件的*.sublime-settings文件也建议一并删掉,避免配置残留干扰
真正卡死的根源往往藏在缓存深处,而不是你刚改的那行设置。每次优化后观察 2–3 天,如果索引状态又开始“假跑”,优先查这三个目录有没有漏删。











