vscode智能补全依赖语言服务器、正确语言模式和项目类型上下文三者齐备;需确认语言模式、安装官方扩展(如ms-python.python+pylance)、配置jsconfig.json/tsconfig.json,并重启对应服务。

VSCode 的智能代码补全(IntelliSense)不是开箱即用的“魔法”,它是否弹出、弹得准不准,取决于语言服务器是否加载、当前文件是否被识别为正确语言、项目是否有可解析的类型上下文——三者缺一,os. 不出方法、axios.get 没参数提示、@/components 按 . 没响应,都是必然结果。
确认语言模式和语言服务器已就位
右下角状态栏显示的是 Plain Text 还是 Python?如果是前者,"editor.quickSuggestions": true 也毫无作用。很多 .jsx 或 .vue 文件被误识别为 HTML,导致 console. 没提示。
- 按
Ctrl+Shift+P→ 输入Change Language Mode→ 手动选对语言(尤其注意.pyi、.ts、.vue等易错配后缀) - 写一行明显报错的代码测试服务是否接管:
TypeScript中输const a: number = 'hello';,没红色波浪线?说明TS Server没启动;Python中输np.arra不提示array?大概率Pylance没加载 - 打开输出面板(
Ctrl+Shift+U),切换到Python或TypeScript Server日志,搜Starting或error
Python 补全必须用 ms-python.python + Pylance
搜“Python”装了十几个扩展?别信图标和下载量。真正起作用的是 ms-python.python(微软官方),且必须确保其内置的 Pylance 已激活。装错或残留旧版扩展(如 tht13.python)会导致 import os 后 os. 只列出 __name__ 这类基础属性。
- 卸载所有非
ms-python.python的 Python 相关扩展(特别是已停更的旧版python) - 打开设置 JSON(
Ctrl+Shift+P→Preferences: Open Settings (JSON)),确认"python.languageServer": "Pylance"(默认值,但有人手动改成"Jedi"导致参数提示丢失) - 按
Ctrl+Shift+P→Python: Select Interpreter,选一个有效环境(否则import numpy后numpy.无方法列表) - 重启 VSCode,开
.py文件输os.验证是否弹出完整方法
JS/TS 补全依赖 jsconfig.json 或 tsconfig.json
没有 jsconfig.json(JS 项目)或 tsconfig.json(TS 项目),VSCode 就把整个项目当单个记事本处理:import utils from './utils' 后 utils. 不出函数,不是插件问题,是项目“没身份”。删掉配置文件立刻退化,就是它在起作用的证据。
- 在项目根目录新建
jsconfig.json,至少包含:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["src/*"]
}
},
"include": ["**/*.js", "**/*.jsx"],
"exclude": ["node_modules"]
}
-
paths映射必须与path-intellisense.mappings设置一致或留空(推荐留空,由语言服务自动读取) - 改完后执行命令面板中的
Developer: Restart TS Server—— 不重启,缓存仍按旧配置解析
路径补全(@/、./)失效的硬性条件
Path Intellisense 插件只在明确语义的路径上下文中触发,不是所有字符串都算数。它识别的合法位置包括:import 或 require() 的模块路径参数、HTML 中 src/href 属性、CSS/SCSS 中 @import 和 url() 内容。
-
console.log('./')、const path = './'、拼接字符串"./" + name这类写法,插件直接忽略 - 别名路径(如
@/components)补不全?三处必须同时满足:jsconfig.json或tsconfig.json存在且含baseUrl和paths;path-intellisense.mappings为空或与paths严格一致(斜杠方向、通配符、引号全要对);执行过Developer: Restart TS Server - 补全默认省略
.js/.ts后缀——这不是 bug,是设计。如需显式写出,加配置:"path-intellisense.extensionPaths": ["js", "ts", "jsx", "tsx"]
最常被忽略的一点:语言服务器的状态不会随文件编辑实时刷新,修改 jsconfig.json 或切换 interpreter 后,不手动重启对应服务(Restart TS Server / 重选 Python 解释器并等待 Pylance 加载完成),补全行为就不会更新。别猜,去输出面板看日志。











