You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code:如何判断References View是否获得焦点(自定义快捷键用)

问题描述

我在OS X系统上使用Visual Studio Code 1.96.2版本,具体版本信息:

Version: 1.96.2 (Universal)
Commit: fabdb6a30b49f79a7aba0f2ad9df9b399473380f
Date: 2024-12-19T10:22:47.216Z
Electron: 32.2.6
ElectronBuildId: 10629634
Chromium: 128.0.6613.186
Node.js: 20.18.1
V8: 12.8.374.38-electron.0
OS: Darwin arm64 23.6.0

我使用内置的References Search View(扩展ID:vscode.references-view),想创建自定义快捷键,通过when表达式限制它仅在侧边栏/活动栏中的该视图获得焦点时执行。

我已尝试以下状态,但均无法标识该视图/树是否获得焦点:

  • 自动补全的reference-view.tree.active(此状态似乎仅标识引用视图树是否有结果)
  • 内置扩展使用的reference-view.active
  • 内置扩展使用的reference-list.active

请问是否存在可判断该视图焦点状态的when表达式,或通用的侧边栏视图焦点判断方法?

解决方案

针对References Search View的精准判断

你可以使用以下when表达式来判断该视图是否获得焦点:

"when": "activeViewlet == 'workbench.view.extension.references-view' && listFocus"
  • activeViewlet == 'workbench.view.extension.references-view':确保当前激活的侧边栏视图是References Search View
  • listFocus:确保视图内的引用结果树处于焦点状态

如果只需要判断视图本身处于激活状态(不管内部列表是否聚焦),可以简化为:

"when": "activeViewlet == 'workbench.view.extension.references-view'"

通用侧边栏视图焦点判断方法

对于任意内置或第三方侧边栏视图,通用判断逻辑分为两步:

  1. 获取视图ID:打开命令面板(Cmd+Shift+P),执行Developer: Toggle Developer Tools,在控制台输入console.log(vscode.window.activeViewletId),切换到目标视图后即可查看其ID
  2. 组合when表达式:
    • 判断视图激活:activeViewlet == '视图ID'
    • 判断视图内列表/树聚焦:activeViewlet == '视图ID' && listFocus(适用于带列表结构的视图)
    • 判断视图内输入框聚焦:activeViewlet == '视图ID' && inputFocus(适用于带搜索框的视图)

内容的提问来源于stack exchange,提问作者Christopher Lewis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 00:12:33