inlayhints.enabled是总开关但非万能钥匙,必须为true且不被工作区设置覆盖;python需pylance三项子开关全开,ts/js需单独配置includeinlayparameternamehints为all并确保类型上下文就绪,而参数名文本提示(如url=)则需额外安装vscode-inline-parameters扩展。

inlayHints.enabled 是总开关,但不是万能钥匙
全局设置 inlayHints.enabled 必须为 true,否则所有语言的内联提示(类型、返回值、参数名)一律不渲染。它不依赖插件是否启用,只认这个布尔值。常见误判是:Pylance 已启用、TS Server 正常运行、文件语言模式正确,但提示仍不出现——先查这个配置项是否被工作区 .vscode/settings.json 覆盖为 false。注意配置名是 inlayHints.enabled,不是 editor.inlayHints.enabled(带 editor. 前缀会失效)。
Python 内联参数名(file=, mode=)需 Pylance 三项子开关全开
原生 Python 扩展不提供任何内联提示,python.analysis.inlayHints 系列配置全部由 Pylance 控制,且三者缺一不可:
-
python.analysis.inlayHints: 总开关,必须设为true -
python.analysis.inlayHints.parameterNames: 控制函数调用处的参数名提示(如open(file=, mode=)) -
python.analysis.inlayHints.functionReturnTypes: 控制get_user() → User这类返回类型标注
还要确认右下角状态栏显示的是 Python (Pylance),而非 Python (Jedi) 或空白;若显示 Python (Pylance Preview),说明未启用正式版,部分提示可能被禁用。
TypeScript/JavaScript 的参数名提示不等于 inlayHints.enabled
JS/TS 的 includeInlayParameterNameHints 是独立配置项,和 inlayHints.enabled 毫无关系。它默认为 "none",必须手动设为 "all" 或 "literals"。但即使设对了,JS 文件仍大概率不显示参数名,因为:
- JS 需要有效 JSDoc(如
/** @param {string} url */)或jsconfig.json中启用"checkJs": true,否则类型链断裂 - TS 文件若引用未安装
@types/xxx的第三方库,参数名会退化为arg0、arg1 - 该配置属于
typescript.preferences或javascript.preferences,不是全局设置,需按语言分别配
函数调用处的 paramName= 提示根本不是 inlayHints 的职责
VSCode 原生 inlayHints.enabled 永远不会在 fetch(url, { method: 'POST' }) 右侧插入 url=、init= 这类文本。这是常见误解的根源。这类提示由第三方扩展 vscode-inline-parameters 实现,原理是 AST 静态解析,与 LSP 无关,也不需要类型定义。它支持 JS/TS/PHP/Lua,但不支持 Python。启用后可自定义前缀(如把 url= 改成 [url]=),也可隐藏单参数调用(foo(x) 不显示 x=)。它和 editor.parameterHints.enabled(括号内悬浮浮层)、inlayHints.enabled(类型/返回值行内标注)三者完全独立,互不影响。
最易忽略的点:不同语言的内联提示由不同机制驱动,没有统一开关。Python 靠 Pylance 子配置,TS/JS 靠 typescript.preferences.includeInlayParameterNameHints + 类型上下文,而 paramName= 文本提示则必须另装扩展。混用时务必分清它们各自生效的边界和前提条件。











