Ctrl+.不弹Quick Fix需先确认Pylance已启用且语言模式为Python(Pylance),右下角“分析中…”消失后,光标停在未解析符号末尾(如np.array|)再触发;settings.json须显式配置python.languageServer为"Pylance"、autoImportCompletions为true、editor.quickSuggestions.other为true。

Ctrl+. 不弹 Quick Fix?先确认 Pylance 和语言模式
VSCode 的自动导入补全根本不是“按 Ctrl+. 就有”,它依赖 Pylance 语言服务器 + 正确索引 + 显式触发逻辑。很多人配了 python.analysis.autoImportCompletions: true 却没效果,第一原因是语言服务器还是 Jedi 或默认 Python。右下角状态栏点击语言模式,必须显示 Python (Pylance),不是 Python (Jedi) 或 Plain Text。若显示错误,点击切换并重启 VSCode;再等右下角“分析中…”消失后才试。
keybindings.json 里改不了自动导入的快捷键
自动导入本身没有独立命令可绑定——它不走 keybindings.json 的 command 字段,而是由两个动作协同完成:Ctrl+. 触发 Quick Fix(对应命令 editor.action.quickFix),或 Ctrl+Space 唤起补全(对应 editor.action.triggerSuggest)。你不能把自动导入改成 Ctrl+Shift+I 这类新组合,因为底层没提供 python.import.symbol 这样的命令 ID。能调的只有这两个入口点:
-
Ctrl+.是唯一可靠触发 import 补全的快捷键,别试图覆盖它;如果失效,说明 Pylance 没就绪或符号不可见 -
Ctrl+Space可以启用,但需确保editor.quickSuggestions.other: true,否则输pathlib.根本不弹建议 - 想换按键?只能改
editor.action.quickFix的绑定,但风险高:比如你把它绑到Alt+Enter,那所有代码修复(包括类型错误、未定义变量)都走这个键,不是专为 import
为什么输完回车后没 import?触发时机错了
自动导入必须在“符号未解析”状态下触发,而不是输入完成之后。常见错误操作:
- 输
np.array→ 按回车 → 光标跳到下一行 → 再按Ctrl+.:此时np.array已被当作普通文本插入,Pylance 不认为它是待补全符号,Quick Fix 不出现 - 正确做法:光标停在
array末尾(即np.array|),立刻按Ctrl+.,选 “Import array from numpy” - 本地模块(如
utils.helper)必须在当前工作区根目录下,且文件名不能是utils.py同时又存在utils/文件夹,否则 Pylance 索引失败
settings.json 必须显式写死的三项配置
UI 设置里勾选“Auto Import Completions”经常不生效,因为 VSCode 会忽略 UI 界面和 JSON 配置冲突时的布尔值。直接编辑 settings.json 并确保这三行存在:
{
"python.languageServer": "Pylance",
"python.analysis.autoImportCompletions": true,
"editor.quickSuggestions": {
"other": true
}
}
注意:"python.analysis.autoImportCompletions" 必须是布尔值 true,不是字符串 "true";"other": true 缺失会导致 datetime. 这类前缀不触发补全——这是最常漏掉的一环。


















