右下角显示 plain text 时需立即手动切换为正确语言模式,因 vscode 不识别语言就不会启动语言服务器,导致 intellisense、高亮、格式化、跳转等功能全部失效;再检查文件是否已保存、后缀是否匹配、files.associations 是否误配、quicksuggestions 和 tabcompletion 是否启用,并重启对应语言服务器。

右下角显示 Plain Text 怎么办
这是最常被跳过的起点。VSCode 不识别语言,就不会启动任何语言服务器,IntelliSense 根本不会加载。
点击右下角状态栏中显示的Plain Text或Unknown,手动选成JavaScript、TypeScript、Python等真实语言模式
- 未保存的临时文件(如
Untitled-1)默认是Plain Text,不触发任何语言服务;可先保存为.py或.ts再测试 - 检查
settings.json里有没有误配的"files.associations",比如把"*.js"映射成"typescript",会导致类型校验错乱、补全降级 - 文件后缀与语言模式不匹配时(如
utils.js被识别为TypeScript),Pylance 或 tsserver 可能拒绝加载或回退到基础模式
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 配置覆盖 - 某些语言(如 Vue 或 Markdown)的
editor.quickSuggestions默认为false,需显式开启
Pylance / TypeScript Server 卡死或没加载
补全空白、悬停无类型、跳转定义失效,大概率是语言服务器进程挂了、没启动,或加载失败——日志里才有真相。
命令面板(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 - Python 项目若缺失
pyproject.toml或venv未激活,Pylance 可能静默降级为 Jedi 模式,补全能力大幅缩水
AI 插件(Copilot / Tabnine)不触发补全
AI 补全不是独立功能,它依赖底层语言服务已就绪。如果 Plain Text 还没切走、editor.quickSuggestions 关着、或 Pylance/tsserver 报错,AI 插件根本收不到上下文。
打开「输出」面板 → 下拉选择GitHub Copilot或Tabnine,观察是否有403 Forbidden、ERR_CONNECTION_TIMED_OUT、Not enabled for this language等提示
- 确认插件文档是否支持当前语言模式(例如旧版 Tabnine 对 Rust 支持有限)
- 某些企业网络会拦截 AI 插件的请求头,需配置代理或切换网络环境验证
- 禁用所有非必要扩展后单独启用 AI 插件测试,排除与 ESLint、Prettier 或 Auto Rename Tag 的冲突
真正卡住的地方往往不在设置开关,而在语言服务器的日志细节里——比如tsconfig.json路径写错导致整个 TS 项目被当作文本处理,或者虚拟环境里少装了一个 typing stub 包,Pylance 就默默放弃推断。这些不会报红,只会让补全变薄、变慢、变空。











