补全卡顿由语言服务器或插件过载导致,缩进错乱源于editor.detectIndentation误判或格式化器(如Prettier/ESLint)与编辑器tabSize冲突;应分治处理:禁用高负载扩展、关闭类型检查以解补全延迟,关闭自动探测并统一insertSpaces/tabSize及校准格式化器tabWidth以稳缩进。

补全卡顿和缩进错乱是两套机制,混着调只会越调越乱。先分清:补全靠语言服务器和插件,缩进靠编辑器内置规则和格式化器。
为什么 VSCode 补全慢得像在加载网页
根本原因不是网络,而是本地语言服务器被撑爆或插件抢了控制权。常见现象包括输入 console. 后等 2 秒才出 log、TS 文件里方法名提示延迟、Python 中 os. 列表半天不弹。
- 用
Developer: Show Running Extensions查看哪个插件 CPU 占比高,重点关掉“TypeScript Hero”“Auto Import”这类重逻辑的扩展 - 禁用非当前项目所需的语言支持:比如只写 Python,就关掉 Go、Rust、PHP 的官方语言扩展
- 在
settings.json里加这两行,直接砍掉最耗资源的类型检查(开发时手动按Ctrl+Shift+P→Typescript: Restart TS server即可):"typescript.validate.enable": false,<br>"javascript.validate.enable": false
- 对大型项目,加
"files.watcherExclude"排除node_modules和dist,否则文件监听器会拖垮补全响应
粘贴/换行缩进突然不对齐,别急着调 editor.autoIndent
这个设置只是“基础开关”,真正决定粘贴后缩进是否自动对齐的,是 editor.formatOnPaste + 当前语言是否绑定了可用的格式化器(formatter)。很多用户开了 autoIndent 却没开 formatOnPaste,结果粘贴进来一堆 Tab 和空格混排的代码,Python 直接报 IndentationError。
- 确认右下角语言标识正确(比如是
Python而不是Plain Text),否则formatOnPaste根本不触发 - 必须安装对应语言的 formatter:Python 装
ms-python.black-formatter或ms-python.autopep8;JS/TS 装esbenp.prettier-vscode并设为默认 - 显式关闭
editor.detectIndentation,改用固定值:"editor.insertSpaces": true,<br>"editor.tabSize": 4
避免文件里混着 2 空格和 4 空格导致检测失灵 - 如果只是临时对齐,全选粘贴内容 →
Ctrl+Shift+P→ 输入Format Selection,比等自动更可靠
editor.formatOnSave 和缩进冲突时,优先级顺序必须理清
你设了 "editor.tabSize": 2,但保存后缩进变成 4,八成是 .prettierrc 或 .editorconfig 在背后改写了规则。VSCode 缩进行为有明确优先级:文件级配置 > 工作区 .vscode/settings.json > 用户全局设置。
- 按
Ctrl+Shift+P→Preferences: Configure Language Specific Settings,选当前语言,看有没有覆盖editor.tabSize - 检查项目根目录是否存在
.editorconfig,里面indent_size = 4会直接覆盖所有编辑器设置 - 如果用了 Prettier,
.prettierrc中的"tabWidth": 4比settings.json里的editor.tabSize权重更高 - 临时验证:把
"editor.formatOnSave": false加进当前工作区.vscode/settings.json,再保存,看缩进是否回归你设的值
补全和缩进看似都发生在键盘敲下之后,但底层走的是完全不同的通道。补全卡,90% 是语言服务器或插件在后台死循环;缩进乱,90% 是格式化器和检测逻辑在互相打架。盯着状态栏右下角的语言模式和缩进显示,比反复改 settings.json 有效得多。


















