清空 settings.json 为 {} 并不能立即恢复悬停默认行为,因 hover 受用户、工作区、语言专属配置及扩展四层叠加影响,工作区设置(.vscode/settings.json)和 pylance/volar 等扩展可完全绕过该文件控制。

直接清空 settings.json 为 {} 就能恢复悬停提示的默认行为——但多数人卡在“改了没反应”,其实是被语言扩展或工作区设置覆盖了。
为什么清空 settings.json 后悬停还是不对
VSCode 的 hover 行为受四层配置叠加影响,settings.json 只是其中一层。常见干扰源:
- 工作区级配置(
.vscode/settings.json)优先级高于用户级,清空用户文件后它仍在生效 - 语言专属块如
"[typescript]": { "editor.hover.enabled": false }会单独压制某类文件 - Pylance、Volar、Rust Analyzer 等扩展自带 hover 控制逻辑,完全不读
editor.hover.delay或editor.hover.enabled - 某些插件(如 Copilot、Sesame AI)会劫持 hover 内容,且不报错、不提示
怎么确认当前 hover 是谁在控制
打开命令面板(Ctrl+Shift+P),运行 Developer: Inspect Editor Tokens and Scopes,把光标停在要检查的变量上,看右下角显示的语言 ID(比如是 typescriptreact 而非 typescript)。再搜对应设置项:
- JS/TS:检查
typescript.preferences.includePackageJsonAutoImports是否影响类型加载 - Python:确认右下角状态栏显示的是
Python而非Plain Text,否则 Pylance 不启动 - Vue:Volar v1.10+ 支持
volar.hover.delay,但旧版只响应vue.editor.hover.enabled - HTML/CSS:MDN 链接由
html.suggest.html5和css.mdnsuggest控制,和editor.hover.enabled无关
重置 hover 的实操顺序(别跳步)
按优先级从高到低清理,避免反复折腾:
- 先关掉所有非必要扩展(尤其 AI 类、CSS 工具类),用
code --disable-extensions启动验证是否恢复 - 删掉项目根目录下的
.vscode/settings.json(工作区设置) - 打开
Preferences: Open Settings (JSON),把内容全删,只留{},保存 - 重启 VSCode 后,手动触发一次
Ctrl+K Ctrl+I(Windows/Linux)或Cmd+K Cmd+I(macOS)——这是唯一绕过所有 delay/enabled 判断的强制拉取方式,能快速验证 LSP 是否就绪 - 如果仍无效,检查
Developer: Toggle Developer Tools的 Console 标签页,看是否有HoverProvider not found或Language Server initializing...类报错
真正容易被忽略的点:hover 提示内容不会随注释修改实时更新,哪怕你刚补完 /** @param */,也得保存文件,语言服务器才会重新解析并刷新提示框。











