补全不生效主因是语言服务未启动或vscode未识别语言:先确认右下角非plain text/unknown,再检查editor.quicksuggestions和tabcompletion设置,最后排查pylance/ts server日志及jsconfig.json等配置文件。

补全不生效,90% 是语言服务没起来或 VSCode 没认出你在写什么语言——先看右下角是不是 Plain Text。
右下角显示 Plain Text 或 Unknown 怎么办
这是最常被跳过的起点。VSCode 不识别语言,就不会启动任何语言服务器,IntelliSense 根本不会加载。
- 点击右下角状态栏中显示的
Plain Text或Unknown,手动选成JavaScript、TypeScript、Python等真实语言模式 - 未保存的文件(如
Untitled-1)默认就是Plain Text,必须先保存为.py、.ts等后缀再测试 - 检查
settings.json里有没有错误的"files.associations",比如把"*.js"映射成"typescript",会导致类型校验错乱、补全降级
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 / Clangd 卡死或没加载
补全空白、悬停无类型、跳转定义失效,大概率是语言服务器进程挂了、没启动、或加载失败——日志里才有真相。
- 用命令面板(
Ctrl + Shift + P)运行Developer: Restart Language Server:对 Python 是重启Pylance,对 TS/JS 是重启tsserver,对 C++ 是重启clangd - 设
"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
jsconfig.json / tsconfig.json / compile_commands.json 缺失或错配
没有这些配置文件,语言服务器只能做基础语法提示,无法推断模块路径、第三方库类型或 C++ 符号索引。
- JS 项目根目录建
jsconfig.json,TS 项目建tsconfig.json,哪怕内容只是{};否则tsserver退化为只认console和document - C++ 项目必须生成有效的
compile_commands.json,常用bear -- make或cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON - monorepo 或多包结构下,
tsconfig.json必须放在真正的工作区根目录,而不是某个packages/xxx子目录里 - 改完配置后,别等自动重载,手动运行
Developer: Restart Language Server
真正卡住人的往往不是配置本身,而是多个设置层级(用户 / 工作区 / 扩展默认)之间的覆盖关系,以及语言服务器启动失败时毫无提示的“静默降级”。动手前先看右下角,再开「输出」面板盯日志,比盲目重装插件快得多。











