vscode可接近sublime text轻量感:需禁用非核心扩展、卸载onstartup激活的扩展、配置files.watcherexclude排除node_modules等目录、使用code --disable-extensions --disable-gpu --disable-workspace-trust启动、同步设置search.exclude与files.exclude。

VSCode 能做到接近 Sublime Text 的轻量感,但前提是主动“砍掉”默认加载的冗余模块,而不是指望它自己变快。
禁用所有非核心扩展后仍卡顿?检查 onStartup 激活项
很多扩展标着“已禁用”,但只要它在 activationEvents 里写了 ["*"] 或 ["onStartup"],VSCode 启动时就会强制加载其 JS 模块——哪怕你从不打开对应语言文件。这类扩展是内存占用的隐形主力。
- 打开命令面板(
Ctrl+Shift+P),运行Extensions: Show Installed Extensions - 逐个点击扩展详情页,重点看
Activation Events字段 - 对含
onStartup、onLanguage:*、*的扩展,直接卸载而非禁用(禁用不阻止初始化) - 保留的应仅限:基础语法高亮(如
bracket-pair-colorizer-2)、文件图标(vscode-icons)、终端增强(shell-launcher)等真正按需触发的插件
files.watcherExclude 必须配,否则 node_modules 会拖垮 CPU
VSCode 默认用系统原生 watcher 监听整个工作区变化,node_modules 里几万个文件一有改动(比如 yarn install),就会触发海量事件,导致渲染进程卡死。这不是“慢”,是直接阻塞主线程。
- 在
.vscode/settings.json中写死排除规则,不要只靠全局设置 - 必须包含:
"**/node_modules/**": true、"**/.git/**": true、"**/dist/**": true - 注意路径结尾的
/**—— 少了这俩,watcher 仍会扫描子目录 - Mac 用户额外加
"**/.DS_Store": true,避免 Finder 隐式写入干扰
启动参数比设置更狠:code --disable-extensions --disable-gpu --disable-workspace-trust
设置项(如 extensions.enabled)是“软禁用”,VSCode 仍会读取扩展元数据、预留进程空间;而命令行参数是启动前就切掉整个加载链,实测冷启动快 1.8–2.3 秒(M2 MacBook Air)。
-
--disable-extensions:彻底跳过扩展宿主进程初始化 -
--disable-gpu:关闭 GPU 加速后,VSync 同步开销归零,滚动/切换标签更顺滑(尤其外接显示器时) -
--disable-workspace-trust:绕过工作区安全检查(包括 Git 状态扫描、自动执行脚本检测),适合本地可信项目 - 别加
--no-sandbox:它虽提速,但破坏 Electron 安全模型,2026 年起 VSCode 已默认拒绝该参数
search.exclude 和 files.exclude 不是可选项,是性能底线
VSCode 的文件树和搜索功能共享同一套索引机制。如果 search.exclude 没配,每次 Cmd+Shift+F 都会递归遍历 node_modules;如果 files.exclude 没配,侧边栏文件列表加载延迟可达 8–12 秒(50k+ 文件项目)。
- 两者必须同时配置,且内容高度重合:
"**/node_modules": true、"**/build": true、"**/out": true -
search.exclude可额外加"**/*.log": true、"**/coverage": true - 避免用通配符
"**/*"—— 它会让排除逻辑退化为全量扫描再过滤,反而更慢
最易被忽略的一点:VSCode 的“轻量”不是靠关掉功能实现的,而是靠让每个模块只做它声明范围内那件事。比如语言服务不该管文件监视,终端不该参与代码补全。一旦发现某个功能(如大纲视图)持续占用 CPU,优先查它是否被错误地绑定到无关扩展上,而不是调低刷新频率。











