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

VS Code如何为大小写转换命令配置共用键绑定的when条件

同快捷键触发大小写转换的实现方案

VS Code 原生没有暴露「当前选中文本大小写状态」相关的内置上下文键,所以你翻遍官方when上下文文档也找不到可用的判定属性,不用在这个方向耗时间。可落地的实现方式有两种:

  • 自定义命令实现状态判断逻辑
    安装支持编写自定义编辑器命令的扩展,自己写一个简单的复合命令,把判断逻辑内置在命令里,不需要依赖when子句做判定:

    1. 触发快捷键时,先获取当前编辑器的选中片段文本
    2. 判断文本的大小写状态:如果选中文本全为大写(排除无大小写区别的字符,比如数字、符号),就执行转小写命令;反之就执行转大写命令
    3. 最后给这个自定义命令绑定你想要的快捷键即可
      核心判断逻辑参考如下:
    // 注意VS Code原生大小写转换命令的正确ID,你之前写的命令名缺前缀还存在拼写错误
    const COMMAND_LOWER = 'editor.action.transformToLowercase'
    const COMMAND_UPPER = 'editor.action.transformToUppercase'
    
    const selected = window.activeTextEditor.document.getText(window.activeTextEditor.selection)
    // 过滤掉无大小写属性的字符后再做判断
    const caseAwareChars = selected.replace(/[^a-zA-Z]/g, '')
    const isAllUpper = caseAwareChars.length > 0 && caseAwareChars === caseAwareChars.toUpperCase()
    
    commands.executeCommand(isAllUpper ? COMMAND_LOWER : COMMAND_UPPER)
    

    这种方式的匹配逻辑最符合你的需求,不会出现误触发。

  • 命令切换类扩展实现
    用支持多命令轮询切换的快捷键扩展,把转大写、转小写配置为同快捷键的轮询项,但这种方式不会识别当前文本的实际状态,只会按照操作顺序轮流触发两个命令,匹配精度差,只适合固定来回切换的场景,不推荐优先使用。

补充说明:截止当前VS Code稳定版,官方确实没有开放选中文本特征相关的上下文键,所有依赖文本内容做判断的快捷键逻辑,都只能通过自定义命令包裹的方式实现。

内容的提问来源于stack exchange,提问作者M. Almog

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:36:44