禁用插件比调优更有效,因为80%以上卡顿源于插件对文件打开事件的监听与响应,如Prettier、ESLint、CodeGeeX等会在双击打开文件时强制加载语言服务和预检,而用户往往仅需查看;实测表明,关闭非核心插件(尤其须在Plain Text语言专属设置中禁用CodeGeeX)并配合File: Open Large File Optimized命令进入只读大文件模式,可彻底规避冗余计算。

为什么禁用插件比调优更有效
VSCode 文件读取卡顿的根源,80% 以上来自插件对文件打开事件的监听和响应。比如 Prettier、ESLint、CodeGeeX 这类插件,默认在你双击打开任意 .js 或 .log 文件时就触发完整语言服务加载+格式化预检,哪怕你只是想快速看一眼内容。这不是“慢”,而是“做了一堆你根本不需要的事”。
实操建议:
- 先执行
Developer: Startup Performance,重点关注 “Activation Events” 列中耗时 >100ms 的插件 - 对非核心工作流插件(如 Markdown 预览、JSON Schema 校验),直接右键 →
Disable (Workspace) - 别信“只关设置就行”——很多插件(如
CodeGeeX)会忽略全局"codegeex.enable": false,必须进Plain Text语言专属设置里关
大文件必须走 Open Large File Optimized
VSCode 默认用完整语言服务加载所有文件,哪怕你打开的是 300MB 的 app.log。此时 tsserver、eslint-language-server 全部被拉起,内存暴涨、UI 冻结是必然结果。
正确做法只有这一条路径:
- 关闭所有标签页,清空当前工作区
- 按
Cmd+Shift+P(macOS)或Ctrl+Shift+P(Win/Linux),输入并执行File: Open Large File Optimized - 选中目标文件后,务必确认左下角状态栏显示
Large file mode (read-only)—— 若显示Log或Plain Text,说明失败,重试 - 进入后立刻点击右下角语言模式 → 手动再选一次
Plain Text,防止插件靠languageId绑定复活
files.watcherExclude 不是可选项,是必填项
文件监视器(watcher)一旦超载,VSCode 就会退化为轮询模式,CPU 持续 30%+,文件变更延迟数秒。这不是配置“要不要加”,而是系统 inotify 句柄耗尽后的崩溃前兆。
在 .vscode/settings.json 中必须写死:
"files.watcherExclude": {
"**/node_modules/**": true,
"**/dist/**": true,
"**/build/**": true,
"**/.git/objects/**": true,
"**/coverage/**": true
}
注意:files.watcherExclude 和 files.exclude 作用完全不同——前者阻止操作系统级监听,后者只隐藏资源管理器里的文件。漏掉 **/.git/objects/** 是常见坑,Git 对象动辄数万小文件,极易打爆句柄上限。
语言服务器内存不设限 = 主动制造 OOM
TypeScript/JavaScript 项目里,tsserver 默认内存限制太保守。遇到含 500+ 个 .ts 文件的模块,它很快触发 GC 频繁回收,编辑卡顿、跳转失效、符号丢失全来了。
在 settings.json 加这行,不是“锦上添花”,是“保命必需”:
"typescript.tsserver.maxMemory": 4096
这个值单位是 MB,4GB 对现代机器很安全;若你开多个 TS 工作区,可提到 6144。别碰 typescript.tsserver.trace 或 log,日志本身就会吃掉可观 I/O 和内存。
真正难的不是找到哪几行配置,而是意识到:VSCode 的“智能”默认是面向小项目的。一旦项目变大,所有“自动激活”“全量索引”“实时分析”都会从助力变成枷锁。删插件、关监听、限内存、走大文件模式——每一步都在对抗它的默认逻辑。忽略任一环,优化就归零。


















