IntelliSense是基于LSP实时解析语法树、推断类型、追踪导入关系的上下文感知建议系统;其效果取决于正确配置语言服务器、解释器、tsconfig/jsconfig及路径别名等项目元信息。

IntelliSense 不是“更聪明的自动补全”,而是基于语言服务器(LSP)实时解析语法树、推断类型、追踪模块导入关系后生成的**上下文感知建议系统**。它能告诉你 arr.map 的参数怎么写,也能在 import { useQuery } 时精准列出 @tanstack/react-query 导出的所有钩子——前提是 VS Code 知道你用的是哪个库、在哪、怎么被引用。
为什么选对语言服务器比装插件更重要
装了“Python”扩展但没选解释器?Pylance 就读不到 site-packages 里的类型存根;用了 TypeScript 却没配 tsconfig.json?路径别名 @/utils 就无法跳转,import 补全也只显示全局变量。
- 检查右下角状态栏语言模式:点击它,确认是
TypeScript而非JavaScript,是Python而非Plain Text - Python 项目必须通过命令面板(
Ctrl+Shift+P)运行Python: Select Interpreter,指向带pip install过依赖的环境 - TypeScript/JavaScript 项目必须有
tsconfig.json或jsconfig.json,哪怕只有{"compilerOptions": {"allowJs": true}}—— 没它,node_modules类型不索引
为什么 jsconfig.json 里 baseUrl 和 paths 不能少
没有 baseUrl,VS Code 就不知道 import "@/api" 的 @ 是从哪开始算的;没有 paths,它就只能按字面路径找文件,而不会去 src/api/index.ts 里查导出了什么。
-
baseUrl必须是相对项目根目录的路径,通常设为"." -
paths的 key 是导入时写的前缀(如"@/*"),value 是相对于baseUrl的实际路径数组(如["src/*"]) - 改完保存,等几秒——状态栏会显示“正在分析工作区”,这是符号缓存重建过程,别急着关
为什么悬停看类型、F12 跳转定义有时失效
这不是功能坏了,而是语言服务器没拿到足够信息。比如你在 obj[ 中用字符串拼接属性名,key]IntelliSense 就无法静态推断 key 值,自然列不出 obj 的成员;又比如 eval() 或 Function 构造函数,直接绕过 AST 分析。
- 动态访问属性(
obj[variable])、with语句、delete操作都会削弱类型推断 - 确保工作区已“信任”:右下角锁形图标点开 → 选“Trust the authors of this workspace”,否则部分 LSP 功能被禁用
- 大型项目可临时加
"typeAcquisition": {"enable": true}到jsconfig.json,让 VS Code 自动从DefinitelyTyped下载类型
为什么重启窗口比重装插件更管用
语言服务器进程(如 tsserver、pylance)会长期驻留内存,缓存符号表。一旦索引错乱或内存泄漏,补全就会变慢、漏项、甚至卡死——此时重装插件无效,因为配置和缓存还在;而 Developer: Reload Window 会彻底重启所有服务进程,清空旧缓存,重新加载配置。
- 快捷键:
Ctrl+Shift+P→ 输入Developer: Reload Window→ 回车 - 更彻底的做法:关闭 VS Code,删掉项目根目录下的
.vscode文件夹(如有自定义配置再备份),再重开 - 长期卡顿?检查
files.watcherExclude是否排除了node_modules和__pycache__,避免文件监听拖垮性能
IntelliSense “智能”起来的,从来不是某个开关或插件,而是你有没有明确告诉它:你用的什么工具链、依赖装在哪、项目结构长什么样。这些信息一旦模糊,它就退回成一个靠字符串匹配的补全器——而这种退化,往往悄无声息。











