VS Code快捷键when子句的高级用法


when子句用于控制VS Code中快捷键的生效时机,其基本结构包含key、command和when条件,如"editorTextFocus && !editorReadonly"表示仅在编辑器聚焦且非只读时生效;支持常见上下文变量如editorTextFocus、textInputFocus及逻辑操作符&&、||、!;高级用法包括终端中限定Ctrl+C复制、区分补全建议与换行的Enter行为、禁用特定语言(如Markdown)的Tab缩进;插件开发者可使用setContext创建自定义上下文并在when中调用;调试时可通过“Developer: Inspect Context Keys”检查当前激活的上下文状态,确保条件正确匹配。

vs code快捷键when子句的高级用法

在 VS Code 中,when 子句用于控制快捷键、菜单项或命令的启用条件。它常出现在 keybindings.jsonpackage.json(扩展开发)中,决定某条快捷键何时生效。掌握其高级用法,能让你更精准地定制操作行为。

1. when 子句的基本结构

keybindings.json 中,每条快捷键可以包含一个 when 条件:

{
"key": "ctrl+d",
"command": "editor.action.addSelectionToNextFindMatch",
"when": "editorTextFocus && !editorReadonly"
}

这个例子表示:仅当编辑器获得焦点且未只读时,Ctrl+D 才触发“添加下一个匹配项”操作。

2. 常见上下文变量与逻辑组合

when 支持多种内置上下文(context)变量,还可通过逻辑运算组合:

  • editorTextFocus:编辑器正在输入文本
  • editorHasSelection:有选中文本
  • textInputFocus:任意输入框聚焦(包括搜索框)
  • inQuickOpen:正在使用快速打开(Ctrl+P)
  • panelFocus:焦点在底部面板(如终端、输出)
  • sideBarFocus:侧边栏聚焦
  • !editorReadonly:编辑器非只读

支持的逻辑操作符:

  • &&:与
  • ||:或
  • !:非

3. 高级场景示例

场景一:仅在终端中启用 Ctrl+C

{ "key": "ctrl+c", "command": "workbench.action.terminal.copySelection", "when": "terminalFocus && terminalTextSelected" }

这样,在终端有选中文本且获得焦点时,Ctrl+C 才执行复制,避免与编辑器冲突。

场景二:区分编辑器与搜索框中的 Enter 行为

{ "key": "enter", "command": "acceptSelectedSuggestion", "when": "suggestWidgetVisible && textInputFocus" }, { "key": "enter", "command": "editor.action.insertLineAfter", "when": "editorTextFocus && !suggestWidgetVisible" }

第一个绑定让 Enter 在代码补全弹窗出现时确认建议;第二个确保无补全时正常换行。

Shakker Shakker

多功能AI图像生成和编辑平台

Shakker 140 查看详情 Shakker

场景三:禁用特定语言下的快捷键

{ "key": "tab", "command": "editor.action.indentLines", "when": "editorTextFocus && !editorReadonly && resourceLangId != 'markdown'" }

在 Markdown 文件中按下 Tab 不再整体缩进行,可配合其他方式处理列表缩进。

4. 自定义上下文(扩展开发专用)

如果你是插件开发者,可通过 API 注册自定义上下文,然后在 when 中使用:

vscode.commands.executeCommand('setContext', 'myExtension.inSpecialMode', true);

之后可在快捷键中写:

"when": "myExtension.inSpecialMode"

这适合实现模式切换类功能,比如进入“审查模式”后启用一组专属快捷键。

5. 调试 when 条件

如果快捷键不生效,可能是 when 条件未满足。使用以下方法排查:

  • 打开命令面板 → “Developer: Inspect Context Keys”
  • 实时查看当前所有激活的上下文变量
  • 检查你依赖的条件是否为 true

基本上就这些。合理使用 when 子句,能让快捷键更智能、更安全,避免误触发。关键是理解当前编辑环境的状态,并用上下文精确描述它。

以上就是VS Code快捷键when子句的高级用法的详细内容,更多请关注其它相关文章!


# 快捷键  # vs code  # vscode  # js  # markdown  # json  # 子句  # 编辑器  # 自定义  # 进阶  # 能让  # 文档管理  # 谷歌seo2022  # 推广营销酒店  # 当地的泉州seo信息  # 成品网站建设文案策划  # 白山seo软件有哪些平台  # 第一个  # 你是  # 换行  # 可通过  # 发布会营销推广怎么写  # 美容店怎么营销推广好呢  # 官方网站下载百度推广  # 沈阳抖音seo排名新手  # 阿里国际运营seo 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: Flexbox布局实践:实现底部页脚与顶部粘性导航条的完美结合  《饿了么》拼好饭点外卖教程2025  iQOO手机信号差网络不稳定怎么办 信号问题原因排查与增强设置【攻略】  抖音评论无法发送如何修复 抖音评论功能操作指南  Lar*el Eloquent:高效删除多对多关系中无关联子记录的父模型  Python中处理嵌套字典与列表的数据提取与过滤教程  解决Windows上Composer PATH变量冲突导致的命令无法识别问题  iPhone16Plus参数配置如何调整声音_iPhone16Plus参数配置声音调整详细方法  申通快件单号查询平台 申通包裹物流动态跟踪  有道AI翻译入口 智能写作官方网站入口  ToDesk远程摄像头功能使用方法_ToDesk远程视频画面查看设置教程  多多买菜门店端app订单查看方法  Python中安全地将环境变量转换为整数的类型注解指南  《百果园》充值余额方法  钉钉任务无法提醒如何处理 钉钉任务提醒优化方法  铁路12306官网入口 铁路12306中国铁路官网登录首页  智慧职教mooc平台登录网址 智慧职教mooc官网直达  招商淘客入门指南  QQ邮箱注册地址 免费获取QQ邮箱账号  以下哪一项是古代兵书三十六计中的计谋  Win10怎么设置快速启动 Win10开启快速启动设置方法  steam缓存文件在哪儿_steam缓存文件的路径查找方法与结构说明  自定义你的VS Code状态栏,监控关键信息  漫蛙漫画官方版直通入口 2025漫蛙漫画免注册访问说明  MySQL多重关联查询:利用别名高效获取同一表的多个关联字段  小红书如何引流到私信?引流到私信有用吗?  《糖豆》添加舞曲方法  抖音网页版官方链接 抖音网页版官网链接入口  LINUX怎么查看显卡信息_LINUX查看GPU状态  TikTok网页版入口快速访问 TikTok官网账号登录方法  解决CSS容器溢出问题:使用calc()实现精确布局与边距控制  yy漫画官方网站登录入口_yy漫画在线阅读页面地址  漫蛙官网(首页入口)_漫蛙漫画稳定访问教程分享  rabbitmq 持久化有什么缺点?  食品生产用水只要符合国家规定的生活饮用水卫生标准就可以吗  如何在CSS中使用伪类选择器_hover实现悬停效果  qq音乐官方网站入口_qq音乐在线听歌网页版链接  《知到》打卡课程方法  动漫岛汉化官网网 动漫岛官方动漫汉化地址  Google Drive API 认证:服务账户与OAuth 2.0的选择与实践  《绿竹漫游》关闭消息通知方法  《下一站江湖2》心法融合技巧  vivo云服务一直提示空间不足怎么办 怎么办vivo云服务老是提示空间不足  如何在CSS中清除浮动解决背景颜色不包裹内容问题_clear after技巧  研招网官方网站招生平台入口_中国研究生招生信息网官网登录  学习通网页版个人登录_学习通网页版个人账户登录入口  MongoDB聚合管道:高效统计列表中各项的文档数量  视频号视频怎么免费保存到相册?保存到相册需要注意什么?  如何在Golang中处理表单文件上传_Golang 表单文件上传示例  c++如何链接Boost库_c++准标准库的集成与使用 

 2025-12-01

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.