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

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

P粉986688829
发布: 2025-12-01 03:09:06
原创
994人浏览过
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 在代码补全弹窗出现时确认建议;第二个确保无补全时正常换行。

Chatbase
Chatbase

从你的知识库中构建一个AI聊天机器人

Chatbase 69
查看详情 Chatbase

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

{ "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子句的高级用法的详细内容,更多请关注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号