sublime text 在大 json 文件中用 ctrl+f 搜索会卡死 ui,因其同步加载全文件并用 ui 线程执行正则匹配;应改用 find in files 或命令行 grep/findstr,并配合 large_file_size_limit 等设置优化。

Sublime Text 在大规模 JSON 文件里搜索卡死,不是内存真不够,而是它把整个文件加载进内存、用 UI 线程跑正则匹配——线程一锁,连取消按钮都点不了。直接换 Find in Files 或命令行,比调设置快得多。
为什么 Ctrl+F 搜大 JSON 会锁死 UI?
默认的 Ctrl+F(或 Ctrl+H)是同步操作:Sublime 把整份 JSON 读进内存,逐行执行正则引擎匹配,同时还要高亮所有结果、渲染选区背景、更新状态栏计数。一个 300MB 的 dump.json 足以让 UI 线程卡住 2–5 分钟,且无法中断。
- 这不是崩溃,是设计使然——Sublime 没对单文件内搜索做异步分块
- 哪怕已设
large_file_size_limit,该设置只影响“打开时是否解析语法”,不干预Ctrl+F的执行路径 - JSON 高亮规则本身含大量嵌套正则,
Ctrl+F会触发语法解析器二次扫描,雪上加霜
用 Find in Files 替代 Ctrl+F(推荐首选)
Find in Files 底层走独立工作线程,支持文件分块读取,不阻塞 UI,且能精准限定范围。对单个大 JSON 文件,它比 Ctrl+F 快 5–10 倍。
使用 JSON Schema 验证 JSON 数据,从示例 JSON 生成 schema,并将其转换为 TypeScript 接口、Python 数据类或 Markdown 文档。
- 按
Ctrl+Shift+F打开面板,在Where栏填绝对路径,例如:C:\data\huge.json(别加*或目录) - 关掉
Regular Expression——除非真要写正则;普通关键词搜索(如"status":404)关掉后快 3 倍以上 - 勾选
Plain Text(如果右下角显示 JSON,先Ctrl+Shift+P→Set Syntax: Plain Text再搜) - 搜完结果在新标签页输出,可点击跳转,滚动流畅,不卡主窗口
命令行 grep / findstr 更快更稳
Sublime 不是 grep。对超大 JSON,直接甩给系统工具,搜完再复制关键段落回 Sublime 查看上下文,全程不卡。
- macOS/Linux:
grep -n '"error": true' /path/to/huge.json | head -30(-n带行号,head防刷屏) - Windows:
findstr /n "timeout" C:\logs\dump.json - 注意:不要用
grep -r或findstr /s搜目录——这里只针对单个 JSON 文件 - 搜出的行号可直接在 Sublime 里按
Ctrl+G跳转,比等它自己扫完快一个数量级
必须同步做的轻量准备
即使换搜索方式,若文件本身还在被当“可编辑代码”加载,后续操作(如替换、选中)仍可能崩。以下配置必须提前加到 Preferences → Settings – User:
-
"large_file_size_limit": 100(单位 MB,≥100MB 文件跳过语法分析) -
"index_files": false(禁用后台索引,否则Find in Files也会慢) -
"viewport_size": 5000(配合"word_wrap": false,防渲染卡顿) -
"detect_indentation": false(JSON 文件无缩进意义,却耗时扫全文件) - 打开文件后立刻
Ctrl+Shift+P→Set Syntax: Plain Text,别等卡了再救
真正麻烦的不是找不到匹配行,而是习惯性在 Sublime 里硬扛搜索——它没为 GB 级 JSON 设计。用对链路:grep 定位 → Sublime 查看上下文 → jq 处理结构,才是不卡的常态。










