补全失效主因是语言服务未连接、配置被覆盖或缓存异常;首要检查右下角语言模式是否为Plain Text或Unknown,点击手动切换为正确语言模式,并确认文件已保存、后缀匹配、quickSuggestions和tabCompletion已启用,再重启对应语言服务器。

补全失效不是编辑器坏了,而是语言服务断连、配置被覆盖或缓存卡住——90% 的问题三分钟内能定位,先看右下角语言模式是不是 Plain Text。
右下角显示 Plain Text 或 Unknown 怎么办
这是最常见也最容易被忽略的起点。VSCode 不知道你在写什么语言,就不会启动对应的语言服务器,IntelliSense 根本不会加载。
- 点击右下角状态栏中显示的
Plain Text或Unknown,手动选成JavaScript、TypeScript、Python、Vue等正确语言模式 - 检查文件后缀是否匹配:比如
utils.js被识别为TypeScript,可能因files.associations里写了"*.js": "typescript",这会导致类型校验错乱、补全降级 - 未保存的临时文件(如
Untitled-1)默认是Plain Text,不触发任何语言服务;可先保存为.py或.ts再测试
editor.quickSuggestions 和 editor.tabCompletion 没开
这两个设置控制补全“弹不弹”和“Tab 键管不管用”,它们默认在部分语言里是关闭的,并非 bug。
- 打开设置(
Ctrl + ,),搜quick suggestions,确保editor.quickSuggestions在other、strings、comments三项都设为true - 搜
tabCompletion,把editor.tabCompletion设为"onlySnippets"(推荐)或"on";设成"off"时,Tab 只缩进,不触发补全 - 注意:这些开关在 UI 设置界面改,只影响当前工作区;要全局生效,得确认
settings.json里有对应项,且没被 workspace 配置覆盖
TypeScript/Python/Vue 语言服务器没起来
补全建议空白、悬停无类型、跳转定义失效,大概率是语言服务器进程挂了、没启动、或加载失败——日志里才有真相。
- 命令面板(
Ctrl + Shift + P)运行Developer: Restart Language Server,对 Python 是重启 Pylance,对 TS/JS 是重启 tsserver - 设
"python.analysis.logLevel": "Trace"或"typescript.tsserver.log": "verbose",然后看「输出」面板 → 选Python Language Server或TypeScript Server Log - 常见日志线索:
Failed to load project(tsconfig.json路径错)、ENOENT: no such file(工作区根路径识别错误)、Cannot read property 'map' of undefined(插件版本不兼容) - Windows 用户可任务管理器杀掉残留的
node.exe进程;macOS/Linux 可执行pkill -f tsserver或pkill -f pylance
AI 插件和格式化插件互相劫持输入逻辑
多个 AI 插件(Copilot、通义灵码、TabNine)或格式化插件(Prettier、ESLint、Auto Close Tag)会争抢输入控制权,导致补全错位、延迟、或完全不出现。
- 按
Ctrl + Space强制唤起补全,观察建议项旁图标:✨= AI 插件,~= 语言服务,□= 代码片段;鼠标悬停也能看到来源提示 - 禁用近期安装的扩展(尤其是
TabNine、GitHub Copilot、Prettier、ESLint),每次禁用后重启 VSCode 并测试 - 特别注意冲突组合:
Microsoft C/C+++clangd、Python扩展 +Pylance、通义灵码+Copilot—— 它们常互相覆盖补全响应
真正难搞的往往不是某个单一开关,而是多个配置层级叠加后的隐性覆盖:用户 settings.json 里开着 quickSuggestions,但 workspace 的 .vscode/settings.json 又把它关了;Volar 插件已装,但 node_modules/typescript 缺失导致语言服务静默退出;Emmet 绑定写成了 "vue-html": "html",却漏掉了逗号让整个 JSON 解析失败——这种细节,才是排查时最耗时间的地方。


















