vs code 卡顿主因是扩展高负载及文件监听过度,应优先禁用 gitlens、eslint 等扩展,配置 files.watcherexclude 排除 node_modules 等目录,并调低 typescript 索引强度,必要时用 --disable-extensions 验证。

禁用 GitLens、ESLint 这类高负载扩展
VS Code 卡顿,八成是某个扩展在后台疯狂扫描文件或触发语法检查,而不是你电脑太旧。GitLens 默认监听整个仓库的 Git 状态,ESLint 和 Prettier 则可能对每个文件做实时校验——尤其在含 node_modules 的项目里,CPU 会直接飙到 90%+。
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Extensions: Show Enabled Extensions,先看哪些开着 - 优先禁用:
GitLens、ESLint、Prettier、Auto Rename Tag;每次禁一个,重启 VS Code 再测 - 别急着卸载——比如
GitLens可以只关掉gitlens.lineAnnotations.enabled,保留核心功能 - 如果禁用后卡顿消失,打开
Developer: Toggle Developer Tools→Performance标签页,录一段操作,确认主线程是否还被某扩展阻塞
配置 files.watcherExclude 排除构建目录
VS Code 默认用 chokidar 监听所有文件变化,一旦工作区里有 node_modules 或 dist,它就会为成千上万个文件注册监听器,内核 inotify 句柄耗尽、UI 线程卡死都是常见后果。
- 在用户设置或工作区
settings.json中加这段:
{
"files.watcherExclude": {
"**/node_modules/**": true,
"**/dist/**": true,
"**/build/**": true,
"**/.git/**": true,
"**/coverage/**": true
}
}
files.watcherExclude 比 files.exclude 更早生效,且必须用双星号 **/xxx/**,单星号或绝对路径(如 /home/user/project/dist)会导致 VS Code 去遍历无效路径,反而更卡cat /proc/sys/fs/inotify/max_user_watches,若低于 524288,执行 echo 524288 | sudo tee /proc/sys/fs/inotify/max_user_watches
调低 TypeScript 语言服务的索引强度
TypeScript 语言服务器(TSServer)是后台最常“拖慢”编辑器的进程之一。它默认自动加载所有 @types 包、分析 package.json 依赖、甚至为未打开的文件预建符号表——中大型项目一开就内存暴涨、响应延迟。
- 在工作区
.vscode/settings.json中加入:
{
"typescript.preferences.includePackageJsonAutoImports": "auto",
"typescript.preferences.suggestAutoImports": false,
"typescript.preferences.useAliasesForBuiltinTypes": false
}
includePackageJsonAutoImports 设为 "auto" 而非 "on",能避免为每个 dependencies 条目提前拉取类型定义tsconfig.json,确保它们没互相 include 错误路径,否则 TSServer 会重复解析同一堆文件typescript.preferences.suggestAutoImports 后,补全时不会自动插入 import,但换来的是编辑时不卡顿——手动 Ctrl+Space 补全再 Ctrl+Enter 插入,其实更快启动卡在“正在加载扩展”?用 --disable-extensions 快速验证
启动时卡住不动,大概率不是 VS Code 坏了,而是某个扩展在激活阶段做了同步阻塞操作——比如读大文件、等网络响应、或被杀毒软件拦截 node.exe 进程。
- 终端运行:
code --disable-extensions,如果秒开,问题就出在扩展 - 再运行:
code --status,看输出里哪些扩展的activated时间超过 200ms;或者启动后立刻执行Developer: Startup Performance - Windows 企业环境要特别注意:把
Code.exe和node.exe(路径类似resources/app/out/vs/workbench/services/extensions/node_modules.asar.unpacked/vscode-js-debug/...)加进杀软白名单 - 别忽略
settings.json里的错误配置——比如search.exclude里写了不存在的绝对路径,VS Code 会卡在fs.stat上反复尝试
真正卡住的地方,往往藏在你以为“只是个小配置”的地方。比如一个没生效的 watcherExclude,或一个被杀软静默拦截的 node.exe 子进程——它们不会报错,只会让编辑器变沉默。










