vscode自动导入失效主因是语言服务未加载或配置冲突。需检查右下角语言标识、禁用word补全、开启autoimportcompletions、确保codeactionsonsave正确配置,并重启验证。

VSCode 自动导入不工作,大概率不是插件没装,而是语言服务没加载、配置项被覆盖、或你根本没触发对的入口。下面直奔问题现场。
为什么 Ctrl+. 什么都没弹出来?
这是最典型的“语言服务未接管”信号。VSCode 不是靠 UI 设置开关来驱动自动导入,它完全依赖后端语言服务器(如 Pylance、TypeScript Server、Volar)是否已就绪并正确识别当前文件类型。
- 看右下角状态栏:必须显示
Python、TS、Vue或JavaScript,且不能带感叹号;若显示Plain Text或Python (Jedi),说明语言服务器没生效 - 按
Ctrl+Shift+P输入Developer: Toggle Developer Tools,切到 Console 标签页,搜Failed to load或Cannot find global type—— 常见于缺失tsconfig.json或jsconfig.json - 对 Python:确认
python.languageServer设为"Pylance"(字符串,带双引号),不是"Default"或空值 - 对 Vue:
Vue: Take Over and Restart必须执行,否则 Volar 不会把<script setup></script>里的符号暴露给 TS Server
补全列表里有 os 但点了只插入名字,不加 import os
这是普通单词补全(word-based suggestion)和语义补全(Pylance/TS Server 提供的 auto-import suggestion)打架的结果。两者显示文字一样,行为却完全不同:前者只插文本,后者才改顶部 import。
- 在项目根目录的
.vscode/settings.json中关闭单词补全:"[python]": {"editor.wordBasedSuggestions": "off", "editor.suggest.showWords": false} - 确保开启语义级自动导入:
"python.analysis.autoImportCompletions": true(Python)、"typescript.suggest.autoImports": true(TS/JS/Vue) - 别用回车确认补全——按
Ctrl+Space唤出列表后,选带灯泡图标(⚡)的项;或输完np.后直接按Ctrl+.弹 Quick Fix - 注意索引状态:右下角显示“分析中…”时所有语义补全都不可用,等它消失再试
保存时没自动整理 import,source.organizeImports 不生效
这个动作不依赖语言服务器是否运行,但极度依赖触发时机和作用域。它只对当前打开的、语法合法的文件生效,且不会跨文件扫描。
- 检查设置是否写在
settings.json顶层,格式严格为:"editor.codeActionsOnSave": {"source.organizeImports": true}(不是source.fixAll,也不是嵌套在[python]下) - 确保文件语言模式正确:.py 文件必须是
Python模式,.ts 文件必须是TypeScript模式,.vue 文件需由 Volar 接管(状态栏显示vue) - 如果用了 ESLint,
source.organizeImports和eslint.codeAction.onSave.fixAll会冲突,建议只留一个;前者只理 import,后者可能重排整个文件 - 该功能对语法错误的文件静默失败——比如
import行末少了个逗号,保存时不会报错,也不会整理
真正卡住人的地方往往不在配置本身,而在于“多个配置层叠加”:全局设置、工作区设置、文件夹设置、[python] 特定语言设置,甚至扩展自带的默认值。每次改完,务必关掉所有窗口重开,别信热重载;而且一定要盯住右下角那个小状态栏——它比任何文档都诚实。











