VSCode代码补全依赖语言服务和扩展配置。TypeScript/JavaScript需设includePackageJsonAutoImports为"auto";Python推荐Pylance并正确选择解释器;自定义片段须匹配scope和文件关联;排查优先看状态栏服务状态及输出面板日志。

VSCode 的代码自动补全和提示不是靠“开个开关”就能全局生效的,它高度依赖语言服务(Language Server)和对应扩展的正确安装与配置。没装对扩展、没配好 settings.json、或者项目缺少语言运行时支持,都会导致补全失效或提示不准。
为什么 TypeScript/JavaScript 补全不工作?检查 typescript.preferences.includePackageJsonAutoImports
TypeScript 自带的语言服务默认会禁用从 node_modules 中自动导入未使用的包名(比如敲 useM 不弹出 useMemo),尤其在 React + TS 项目中容易误以为补全坏了。
- 打开设置(
Ctrl+,或Cmd+,),搜索includePackageJsonAutoImports - 设为
"auto"(推荐)或"on",而不是默认的"off" - 该配置实际写入
settings.json后效果立显,无需重启 VSCode - 注意:仅影响 TS/JS 文件,且要求项目根目录有有效的
tsconfig.json或jsconfig.json
Python 补全没反应?优先换用 Pylance 而非 Python 官方扩展
VSCode 自带的 Python 扩展(由 Microsoft 提供)默认启用的是 Jedi 引擎,对类型推导、大型项目跳转和补全准确率明显弱于 Pylance。
- 卸载或禁用
Python扩展的typeCheckingMode相关设置(它会干扰 Pylance) - 确保已安装
Pylance扩展,并在设置中确认python.languageServer值为"Pylance" - 如果使用虚拟环境,务必在命令面板(
Ctrl+Shift+P)中执行Python: Select Interpreter指向正确的venv/bin/python路径 -
Pylance依赖pyright,若提示 “No Python interpreter selected”,补全必然空白
自定义补全片段(Snippets)不生效?确认 scope 和文件关联
自己写的 JSON 片段文件(如 javascript.json)放对位置只是第一步,VSCode 必须知道“在什么语言、什么后缀下触发它”。
- 片段文件需放在
~/.vscode/snippets/(macOS/Linux)或%USERPROFILE%\AppData\Roaming\Code\User\snippets\(Windows) - 文件名决定默认作用域:
javascript.json→ 仅对.js和已设为 JavaScript 模式的文件生效 - 若想在
.ts中也触发,必须在片段定义里显式加"scope": "javascript,typescript" - 检查右下角语言模式是否正确:点击 VSCode 窗口右下角的
Plain Text,手动选成JavaScript或TypeScript
补全质量最常卡在“语言服务没起来”这一步——不是设置漏了,而是扩展没加载、进程崩溃、或项目结构让服务器无法解析上下文。遇到问题先看状态栏左下角有没有 TS Server / Pylance 的加载图标,再查输出面板(Ctrl+Shift+U)里对应语言通道的日志。










