editor.quickSuggestions必须设为对象形式且"other":true,否则补全不会弹出;需配合正确语言模式、jsconfig.json/tsconfig.json及官方语言服务器(如Pylance)才能实现完整智能补全。

editor.quickSuggestions 必须为 true,否则补全根本不会弹出——这是最常被忽略的硬性前提。
很多用户敲 console. 没反应,第一反应是“插件没装好”,其实只是这个开关在当前语言下被设成了 false。VSCode 默认在 JSON、Markdown、Plain Text 等模式下关闭自动提示,而你打开的 .js 文件如果右下角显示的是 Plain Text,那 editor.quickSuggestions 再开也没用。
- 打开
Ctrl+Shift+P→ 输入Preferences: Open Settings (JSON) - 确保有这段配置(不是靠 GUI 点击,必须写进 JSON):
"editor.quickSuggestions": { "other": true, "comments": false, "strings": true } -
strings: true很关键:它让import('./')、require('')、url("")这类字符串内也能触发路径补全 - 如果只在 JS/TS 中需要,可改用语言专属配置:
"editor.quickSuggestions": {"javascript": true, "typescript": true}
jsconfig.json 或 tsconfig.json 是 JS/TS 补全的“身份证明”
没有它,VSCode 就把整个项目当一堆孤立文本处理:import utils from './utils' 后输 utils. 为空,不是插件问题,是项目没“注册”进 TypeScript 语言服务。
- 在项目根目录新建
jsconfig.json(JS 项目)或tsconfig.json(TS 项目) - 最小可用内容:
{ "compilerOptions": { "module": "commonjs", "target": "es2020", "allowSyntheticDefaultImports": true, "esModuleInterop": true }, "include": ["**/*.js"] } - 用 ESM(
type: "module")?把"module"改成"nodenext",并加"moduleResolution": "nodenext" - 用了路径别名(如
@/components)?必须在compilerOptions.baseUrl和paths中显式声明,否则补全找不到目标 - 删掉这个文件,补全立刻退化——这就是它起作用的铁证
Python 补全失效?大概率装错了扩展
搜“Python”随手点安装,90% 装的是 tht13.python 或旧版 python 扩展——它们不带 Pylance,也不支持现代类型推导,import os 后 os. 只列出 <strong>name</strong> 这类基础属性。
- 卸载所有非
ms-python.python的 Python 相关扩展(尤其已停更的) - 确保安装的是发布者为
Microsoft的ms-python.python - 检查设置中
"python.languageServer"值为"Pylance"(默认即如此,但手动确认更稳) -
Ctrl+Shift+P→Python: Select Interpreter,选一个真实存在的解释器(否则numpy.也空白) - 重启 VSCode,用真实保存的
.py文件测试;未保存的临时文件或纯文本文件不会触发Pylance
路径别名(如 @/)补全不生效?jsconfig.json 配置不完整
写了 @/components/ 却没补全,不是插件问题,是 VSCode 根本不知道 @ 指向哪。它不会猜,必须明说。
- 在
jsconfig.json的compilerOptions下加:"baseUrl": ".", "paths": { "@/*": ["src/*"], "@components/*": ["src/components/*"] } -
baseUrl是解析相对路径的起点,paths是映射规则,二者缺一不可 - 修改后需重启 TS 服务:
Ctrl+Shift+P→TypeScript: Restart TS server - 注意:路径补全只在合法上下文触发(
import、require()、HTMLsrc、CSSurl()),console.log('@/')不会弹
复杂点在于:补全质量高度依赖上下文完整性。一个 jsconfig.json 文件、一个正确的语言模式、一个激活的官方语言服务器,三者必须同时就位——漏掉任意一环,补全就会降级成“只认变量名”的原始状态。


















