首页 > 开发工具 > VSCode > 正文

VSCode上下文密钥_条件表达式与when子句

幻影之瞳
发布: 2025-11-21 10:33:31
原创
326人浏览过
上下文密钥是VSCode中用于控制UI行为的布尔状态标志,如editorTextFocus、resourceLangId等,可在when子句中通过逻辑与比较操作精确控制命令、菜单和快捷键的显示与启用条件,结合Developer: Inspect Context Keys可实时调试,对扩展开发和个性化配置至关重要。

vscode上下文密钥_条件表达式与when子句

在 Visual Studio Code(VSCode)中,上下文密钥(context keys) 是控制 UI 行为和命令可用性的核心机制之一。它们常用于 when 子句中,决定菜单项、快捷键、按钮等是否显示或启用。理解上下文密钥与条件表达式的使用方式,对自定义编辑器行为或开发扩展非常关键。

什么是上下文密钥?

上下文密钥是布尔值的状态标志,表示当前编辑器或应用所处的某种“上下文”。例如,某个文件是否已聚焦、是否有选中文本、当前语言模式是什么等。这些密钥在运行时动态更新,开发者可在配置中通过 when 条件判断其真假。

常见的上下文密钥包括:

  • editorTextFocus:文本编辑器获得焦点
  • editorHasSelection:编辑器中存在文本选择
  • inQuickOpen:正在使用快速打开面板
  • terminalFocus:终端获得焦点
  • resourceLangId == 'python':当前文件是 Python 类型

when 子句中的条件表达式

when 子句出现在 package.json 的命令、菜单、键绑定等配置中,用于指定某项功能何时生效。它支持逻辑运算和比较操作。

基本语法示例:

  • editorTextFocus && !editorHasSelection:编辑器有焦点且无选中文本
  • terminalFocus || outputFocus:终端或输出面板获得焦点
  • resourceLangId == 'markdown':当前文件是 Markdown 类型
  • config.editor.tabSize == 4:编辑器 tabSize 配置为 4

支持的操作符:

  • 逻辑:&&(与)、||(或)、!(非)
  • 比较:==、!=、<、<=、>、>=
  • 字符串、数字、布尔类型均可参与比较

如何查看当前上下文密钥状态

调试 when 条件时,可通过命令面板执行 Developer: Inspect Context Keys 命令。它会打开一个实时视图,列出所有当前激活的上下文密钥及其值,方便验证条件是否满足。

DeepBrain
DeepBrain

AI视频生成工具,ChatGPT +生成式视频AI =你可以制作伟大的视频!

DeepBrain 94
查看详情 DeepBrain

这个工具对扩展开发者尤其有用,能快速定位为何某个菜单项未显示或快捷键未生效。

在扩展开发中的实际应用

假设你开发一个扩展,希望只在 JavaScript 文件中显示某个命令:

"menus": { "editor/context": [ { "command": "myExtension.formatCustom", "when": "resourceLangId == 'javascript'" } ] }

或者你想让快捷键仅在没有选中文本时生效:

{ "key": "ctrl+d", "command": "myExtension.duplicateLine", "when": "editorTextFocus && !editorHasSelection" }

合理组合上下文密钥可实现精细的用户交互控制。

基本上就这些。掌握上下文密钥和 when 条件表达式,能让 VSCode 的自定义能力大幅提升,无论是写扩展还是调整个性化设置都很实用。

以上就是VSCode上下文密钥_条件表达式与when子句的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号