设 editor.hover.delay 为 0 反而更卡,因跳过等待直接请求语言服务器,而 TS/Volar 等冷启动未完成,导致空白或卡顿2~3秒;200~400毫秒最稳。

直接改 editor.hover.delay 就行,但设成 0 反而更卡,200~400 毫秒是多数人最稳的区间。
为什么设 editor.hover.delay 为 0 会闪屏或卡住
设成 0 不是“立刻显示”,而是跳过等待、立刻向语言服务器发请求。这时候如果 TypeScript Server 还在 “Loading…”、Volar 正在解析 <script setup></script>,就会返回空白框,或者卡住 2~3 秒。这不是配置错了,是暴露了语言服务冷启动问题。
- 大型 TS/JS 项目里,状态栏右下角显示 “TypeScript initializing…” 时,压低 delay 没用
- Vue 文件中悬停没反应?先确认
volar.hover.delay是否已设(Volar v1.10+ 支持) - Python 文件延迟不听
editor.hover.delay?Pylance 默认不读这个值,得查它自己的配置项
怎么确认改的值真的生效了
改完不用重启 VSCode,但旧代码行上的悬停提示可能还缓存着,得移到新行再试一次。常见失效原因不是写错,而是被更高优先级设置覆盖:
- 检查
editor.hover.enabled是不是true——关了就啥都别调了 - 打开命令面板(
Ctrl+Shift+P),运行Developer: Toggle Developer Tools,切到 Console 标签页,悬停时看有没有报错如HoverProvider not found - 确认你改的是当前工作区的
.vscode/settings.json,不是用户全局设置(工作区优先级更高) - 临时禁用 ESLint、Tailwind CSS IntelliSense、IntelliCode 等扩展,再试一次
不同语言扩展是否各自管自己的 hover 延迟
是的。Pylance、Volar、Rust Analyzer 这类语言扩展通常不读 editor.hover.delay,而是走自己内部的缓存和触发策略。表现就是:你在 JS 文件里把 delay 调到 100,但悬停 Python 文件还是慢半拍。
- Volar:v1.10+ 支持
volar.hover.delay,单位毫秒 - Rust Analyzer:不暴露 delay 配置,但可通过
rust-analyzer.hoverActions.enable控制是否显示操作按钮 - 找不到专属配置时,最有效的是减负:用
files.watcherExclude排除node_modules、dist等目录
想彻底禁用自动悬停但保留手动唤出
直接设 "editor.hover.enabled": false 即可。它只禁自动弹出,不影响快捷键。
- 手动唤出推荐用
Ctrl+K Ctrl+I(Windows/Linux)或Cmd+K Cmd+I(macOS) - 这个组合键绕过所有 delay 和 enabled 判断,强制拉取当前光标位置的 hover 内容
- 注意:光标必须紧贴变量名、函数名等标识符字符上,不能停在空格、括号里或注释中
真正容易被忽略的是语言服务器本身的负载状态——延迟调再低,服务没就绪,悬停就是空的或卡住。与其死磕 delay 数值,不如先看右下角有没有 “Loading…”,再决定要不要调参。











