VSCode智能提示依赖LSP和本地类型分析双驱动,核心是编辑器与语言能力解耦;IntelliSense作为LSP客户端,90%功能由typescript-language-server等后台服务提供,VSCode仅负责渲染与通信。

IntelliSense 本质是 LSP 客户端,不是 VSCode 自己写的补全逻辑
你看到的 import 提示、函数参数预览、跳转定义,90% 来自运行在后台的 typescript-language-server、pylsp 或 rust-analyzer。VSCode 只负责渲染、触发、传文件内容——它甚至不解析 TypeScript 类型。
- 关闭
typescript.preferences.includePackageJsonAutoImports后,import补全会立刻变少,这不是 VSCode 设置,是 TS 服务响应策略变了 - 打开一个没装
eslint插件的 JS 文件,console.后仍能提示,因为tsserver内置了 DOM 和 Node.js 全局类型 - 如果
node_modules被删了,TS 项目里大量补全失效,不是插件坏了,是语言服务器找不到@types声明文件
JavaScript/TypeScript 场景下,jsconfig.json 或 tsconfig.json 直接决定提示范围
没有配置文件时,VSCode 默认以单文件为单位做类型推导,跨文件引用几乎不工作;一旦存在有效配置,它就启用项目级语义分析。
-
"compilerOptions": { "allowSyntheticDefaultImports": true }开启后,import React from 'react'才不会被标红,补全才包含React.useState -
"include": ["src/**/*"]漏写,src/utils.ts里的工具函数在src/App.tsx中就不会出现在补全列表里 - 用
npm link本地调试包时,必须在tsconfig.json的"paths"里配好别名,否则导入路径补全和跳转全部失效
Python 用户常误以为 Pylance 是“增强版 IntelliSense”,其实它是替代品
原生 Python 插件用的是 python-language-server(已停更),而 Pylance 是微软自研的、基于 pyright 的新语言服务器——它不依赖 pip install 环境,而是直接读取 .pyi 存根和 AST。
- 禁用
Pylance后,requests.get().json()返回类型变成Any,补全只剩通用方法;启用后能精确提示dict键名(如果有类型注解或存根) -
typing.TYPE_CHECKING块里的 import 不会被运行时加载,但Pylance会扫描它,从而补全仅用于类型提示的模块 - 虚拟环境路径没在
python.defaultInterpreterPath里正确设置,from django.db import models就不会触发models.补全——因为Pylance找不到django包源码
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"lib": ["ES2020", "DOM"],
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"noEmit": true,
"esModuleInterop": true,
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "preserve",
"incremental": true,
"plugins": [
{
"name": "@zwave-js/ts-config"
}
]
},
"include": ["src/**/*", "types/**/*"],
"exclude": ["node_modules"]
}
真正卡住 IntelliSense 的,往往不是 VSCode 设置,而是语言服务器能否拿到准确的项目结构、类型定义和运行时上下文。改完 tsconfig.json 必须重启 TS 服务(Ctrl+Shift+P → Typescript: Restart TS server),不然所有改动都白调。










