vscode代码补全失效主因是语言服务断连、配置被覆盖或缓存异常;须先检查右下角语言模式是否为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 配置覆盖
Pylance / TypeScript Server / Intelephense 卡死或没加载
补全建议空白、悬停无类型、跳转定义失效,大概率是语言服务器进程挂了、没启动、或加载失败——日志里才有真相。
- 命令面板(
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
PHP 补全必须用 Intelephense,别碰旧版 PHP IntelliSense
原官方 “PHP IntelliSense” 已下架,功能被 Intelephense 全面继承并增强;继续用旧扩展只会导致补全残缺、跳转失败、类型推断全无。
- 卸载所有其他 PHP 扩展(尤其是
PHP IntelliSense、PHP Tools),只留Intelephense - 确保系统已安装 PHP CLI(运行
php -v可验证),Intelephense依赖其解析语法 - 若项目使用 Composer,请确认
vendor/autoload.php存在;否则需在.vscode/settings.json中手动加"intelephense.environment.includePaths": ["./vendor/autoload.php"] - 首次打开大型项目时,
Intelephense会后台构建索引,此时补全可能延迟几秒——不是失效,是正在加载
真正难排查的从来不是“为什么没补全”,而是“为什么看起来像在补全,但提示内容明显错漏”。比如 os. 列出一堆私有属性、import requests 后 requests. 只有基础方法、或 pathlib.Path(). 不显示 resolve() ——这类现象说明语言服务器已启动,但环境路径、解释器绑定或索引范围出了偏差,得盯日志、查 python.defaultInterpreterPath、确认虚拟环境是否被真实激活。











