VSCode自动补全失效主因是语言服务未启动、语言模式错误或关键设置被禁用;需先确认右下角语言模式正确,再检查editor.quickSuggestions、editor.suggest.showFunctions、includePackageJsonAutoImports及python.languageServer等配置是否合规。

VSCode 的自动补全不是开关式功能,而是由语言服务、扩展配置、编辑器设置三者协同驱动的系统行为。关掉某个设置可能让整个补全链路断裂,但盲目开一堆选项反而会互相干扰。
为什么补全建议根本不出现在 JavaScript/TypeScript 文件里
最常见原因是 editor.suggest.showFunctions 被意外关闭,导致函数类建议被过滤掉——你敲 useM,列表里只显示变量和关键字,useMemo 完全不出现。
- 检查方式:打开命令面板(
Ctrl+Shift+P或Cmd+Shift+P),执行Preferences: Open Settings (JSON),确认没有类似"editor.suggest.showFunctions": false的硬编码禁用项 - 更隐蔽的问题是
typescript.preferences.includePackageJsonAutoImports设为"off":这会让 TS 语言服务主动忽略 node_modules 中的导出,连带影响函数建议的完整性,尤其在 React + TS 项目中 - 确保项目根目录存在有效的
tsconfig.json或jsconfig.json;否则 TS 语言服务可能降级为基础文本匹配,补全质量断崖下跌
Python 补全空白或只显示变量名不带括号
根源几乎总是语言服务器选错——默认的 Jedi 引擎不支持参数模板插入,选中 print 后只会插入 print,不会自动补 () 和光标定位。
- 必须将
python.languageServer显式设为"Pylance"(不是"Default"或"Jedi") - 检查右下角状态栏是否显示正确的 Python 解释器路径;若显示
No Python interpreter selected,Pylance 直接无法加载,补全必然为空 -
editor.suggest.insertMode推荐设为"replace":避免在已有代码后追加补全内容,造成语法错误
输入函数名回车后不自动带 (),只插入名字本身
这不是 editor.autoClosingBrackets 的职责,它只管手动打 ( 时是否补 )。真正决定“选中函数后插什么”的,是语言服务返回的建议项是否携带 insertText 模板。
- 对 JS/TS:确保
typescript.preferences.includePackageJsonAutoImports是"auto"或"on",否则函数建议缺失insertText - 对 Python:Pylance 必须启用
editor.parameterHints.enabled,否则即使函数建议存在,也不会生成带括号的模板 - Mac 用户额外注意:输入法处于中文状态时,回车键可能被系统拦截,导致补全未确认就中断;切换为英文输入法再试
路径补全在 import 里失效,或 @/components/ 别名不提示
VSCode 的路径补全有严格上下文限制——只在 import、require()、HTML 的 src/href 等特定位置触发,普通字符串赋值(如 console.log('./'))完全不响应。
- 确保
editor.quickSuggestions.strings为true,否则字符串内不触发任何建议 - 别名补全必须配合
jsconfig.json或tsconfig.json中的baseUrl和paths配置,且修改后需重启 TS 语言服务(重载窗口或执行Typescript: Restart TS server) - 若使用 Vue,还需在
files.associations中明确将*.vue关联到vue语言模式,否则<script setup>内的import不会被识别为路径上下文
补全失效时,第一反应不该是调设置,而是看右下角语言模式是否正确、状态栏是否有红色报错图标、输出面板(Output → 选择对应语言服务)里有没有连接失败日志——90% 的问题卡在语言服务没起来,而不是配置写错了。


















