补全提示不显示函数名或参数,需确认editor.suggest.showfunctions、showkeywords、showvariables、showmethods均为true;同时确保语言服务器(如pylance/ts server)正常运行、类型定义完整且jsconfig.json/tsconfig.json配置正确。

补全提示不显示函数名或参数?检查 editor.suggest.showKeywords 和相关开关
补全列表里只有变量、没函数、没关键字,大概率是几个隐藏开关被关了。VSCode 默认只开基础项,很多语义级提示得手动打开。
在 settings.json 中确认以下几项为 true:
-
"editor.suggest.showKeywords": true—— 否则if、return等关键字不会出现在建议里 -
"editor.suggest.showFunctions": true—— 关闭后函数名(包括 import 进来的)直接消失 -
"editor.suggest.showVariables": true—— 关掉后当前作用域变量不提示,只剩全局或内置 -
"editor.suggest.showMethods": true——obj.后看不到方法列表的主因之一
这些设置不是“可有可无”,而是决定补全内容是否包含某类符号的硬开关。尤其在 Python 或 TypeScript 项目中,漏掉 showFunctions 就会导致 requests. 或 Array. 后一片空白。
为什么 import 后点不出方法?语言服务器 + 类型定义缺一不可
补全提示内容的质量,不取决于编辑器设置,而取决于 VSCode 能否解析出对象的结构。光有 editor.quickSuggestions 全开,但没类型信息,axios.get 就只会显示 get 两个字,没有参数签名和文档。
- Python:装
ms-python.python,确保python.languageServer是"Pylance";第三方库要装对应types-*包,比如pip install types-requests - TypeScript/JS:必须有
tsconfig.json或jsconfig.json,否则路径别名(如@/utils)和模块导出都解析失败 - React/Vue 项目:若用
defineProps或defineComponent,需启用"vueCompilerOptions.experimentalRuntimeMode": true(Vue 3.4+)才能推导 props 补全
一个典型现象:import { debounce } from 'lodash' 后,debounce( 不弹参数提示——这不是设置问题,是 VSCode 根本没加载 @types/lodash,或者 node_modules/@types 被 files.exclude 错误排除了。
补全内容顺序混乱?改 editor.suggestSelection 和 localityBonus
默认补全列表常把无关的全局变量或远端导入项顶到最前,真正想用的本地函数反而要翻半天。这不是算法 bug,是排序策略没对齐你的编码习惯。
-
"editor.suggestSelection": "first":让第一个建议高亮,按Tab或Enter直接采纳,适合信得过默认推荐的场景 -
"editor.suggest.localityBonus": true:优先展示当前文件、当前作用域内定义的符号,大幅减少跨文件干扰 -
"editor.suggest.filterSuggestions": true:启用上下文过滤,比如在const x =后只显示可赋值类型,而非所有函数
注意:localityBonus 在大型 monorepo 中效果明显,但若项目没正确配置 tsconfig.json 的 include,它可能误判“当前文件”范围,导致本地变量反而被压低。
字符串里想补变量?strings 设置不能一刀切
很多人设 "strings": false 是为了防注释干扰,但这会同时禁掉模板字符串里的变量补全,比如 `Hello ${` 后无法提示 user.name。
- 通用安全配置:
"strings": true,再配合"editor.suggest.showVariables": true - 若确实需要避免字符串内误触发(如写正则时),可用语言特定设置替代全局设置:
"[javascript]": { "editor.quickSuggestions": { "other": true, "comments": false, "strings": true } } - HTML 中的
src="..."或 Vue 的:src="..."补全路径,也依赖strings: true,否则./后不弹路径建议
真正难调的不是“开不开”,而是“在哪开、对谁开”。同一个 settings.json 里混用全局和语言块配置时,优先级容易踩坑:语言块会覆盖全局,但拼写错误(比如写成 "[javaScript]")会让整块失效,且无报错提示。











