vscode代码补全默认启用,但需同时满足三条件:正确语言模式、对应语言服务器(如pylance/ts server)已加载、项目具备可解析上下文(如jsconfig.json/tsconfig.json),缺一不可。

VSCode 的代码补全不是“开启一个开关”就能用的功能,它默认已启用,但是否弹出、弹得准不准,取决于三个硬性条件是否同时满足:当前文件被识别为正确语言模式、对应语言服务器(如 Pylance、TypeScript Server)已加载、项目具备可解析的上下文(如 jsconfig.json 或 tsconfig.json)。缺一不可。
右下角语言模式不对,补全根本不会触发
VSCode 不靠文件后缀判断语言,而是看右下角状态栏显示的 language mode。如果显示 Plain Text 或 Unknown,哪怕你在编辑 .py 文件,editor.quickSuggestions 设成 true 也无效。
- 按
Ctrl+Shift+P→ 输入Change Language Mode→ 手动选Python/TypeScript/JavaScript - Vue 单文件组件中
<script></script>块常被误判为HTML,需点击右下角切换 - 写一行明显报错的代码测试:比如 TypeScript 中输
const a: number = 'x';,没红色波浪线?说明语言服务器没接管
Pylance 没加载,Python 补全只剩基础属性
装了十几个带 “Python” 的扩展?真正起作用的是 ms-python.python,且必须确保其内置的 Pylance 已激活。用 Jedi 或旧版扩展会导致 os. 只列出 __name__ 这类基础属性。
- 打开命令面板 →
Python: Select Interpreter→ 选一个有效环境(路径不能为空或不存在) - 检查设置 JSON 中
"python.languageServer"是否为"Pylance"(不是"Jedi",也不是空) - 重启 VSCode 后,在
.py文件中输入pathlib.Path().,若只列__class__等,说明 Pylance 没加载成功 - 打开输出面板(
Ctrl+Shift+U)→ 切换到Python日志 → 搜Starting或error
JS/TS 补全跨不了文件?大概率缺配置文件
没有 jsconfig.json(JS 项目)或 tsconfig.json(TS 项目),VSCode 就把整个项目当单个 JS 文件处理:import utils from './utils' 后 utils. 不出函数、@/components 别名不识别、类型提示全失效。
- 在项目根目录新建
jsconfig.json,最简内容至少含:{"compilerOptions": {"module": "nodenext", "target": "es2020", "allowJs": true, "checkJs": true, "moduleResolution": "nodenext"}} - 用了路径别名(如
@/utils)?必须加baseUrl和paths,例如:"@/*": ["src/*"] - 改完立刻执行
Ctrl+Shift+P→TypeScript: Restart TS server,不重启等于没改 -
editor.suggestOnTriggerCharacters必须为true,否则输入.、(不会自动拉框
最容易被忽略的是:补全依赖语言服务器对项目结构的静态分析,而不是你装了多少插件。删掉 jsconfig.json 补全立刻退化,就是它在起作用的证据;右下角切错语言模式,补全就彻底失能——这些不是“功能没开”,而是“条件没凑齐”。











