vscode 中 editor.action.transformtouppercase 和 editor.action.transformtolowercase 命令需手动配置快捷键,无默认绑定;必须聚焦编辑器文本区且存在非空选区才生效,转换基于 javascript touppercase()/tolowercase(),不识别语义,也不支持大小写翻转。

VSCode 里没有预设快捷键,必须手动配置
VSCode 自 v1.23 起就内置了 editor.action.transformtouppercase 和 editor.action.transformtolowercase 命令,但官方从未绑定默认快捷键。你看到的 Ctrl+Shift+U 或 Ctrl+Shift+L 等组合,要么是旧版文档残留,要么是用户自行配置的——不是出厂设置。
直接打开「键盘快捷方式」(Ctrl+K Ctrl+S),搜索 transform to uppercase,你会看到它当前“无键绑定”。右键该条目 →「添加快捷键」→ 按下你想要的组合(比如 Ctrl+Alt+U),回车确认即可生效。
- 推荐避开
Ctrl+U(已被撤销格式化占用)、Ctrl+Shift+U(常被输入法或远程工具劫持) - macOS 用户注意:
Cmd+U也冲突较多,建议用Cmd+Alt+U - 配完务必在搜索框里输入该快捷键,确认只有一条匹配,否则会因冲突而静默失效
选中范围不对,快捷键必然没反应
这两个命令严格依赖两个条件:焦点必须在编辑器文本区(editorTextFocus),且存在非空选区。光标停在单词上、只按方向键移动、或者选中了空行/纯空白,都不算有效选中。
- 多光标时,每个光标独立执行转换;但若某个光标选区为空,那一处就跳过,不会报错也不会提示
- 终端(Terminal)、调试控制台(Debug Console)、Markdown 预览页、设置面板——这些区域完全不响应该命令
- 状态栏右下角显示类似
2 lines, 17 chars才算靠谱;如果显示0 chars或只有spaces,说明没真正选中字母
转换行为是纯字符映射,不识别语义
Transform to Uppercase 实质调用的是 JavaScript 的 .toUpperCase(),对 ASCII 字母做单向映射,其余一切照旧。它不解析驼峰、不跳过字符串、不区分变量名和字面量。
- 选中
getUserId→ 变成GETUSERID(不是GETUSERID,不拆词) - 选中
user_name→ 变成USER_NAME(下划线保留) - 选中
"UserName"(含引号)→ 变成"USERNAME"(引号和内容一起转) - 含 Unicode 如
café→ 多数情况下变成CAFÉ(重音保留),但土耳其语i/I映射不兼容 ICU 规则
想“反转大小写”?原生不支持,别硬凑
VSCode 没有 toggleCase 命令,也没有逐字符翻转(a↔A)的原生能力。试图用查找替换正则模拟(如 ([a-z])|([A-Z]) → $2$1)在 VSCode 中不可靠:替换引擎不支持条件逻辑,且无法保证大小写一一对应。
真需要 toggle,只有两个现实选项:
- 装扩展
change-case,它提供Change Case: Toggle Case命令(基于字符判断,非正则) - 手动组合快捷键:先按大写键,再按小写键——但要注意,这本质是两次单向操作,不是原子 toggle
最易被忽略的一点:批量改变量名时,纯文本转换会同步污染字符串、注释和类型声明。这类场景应优先用 F2 触发语义重命名,而不是依赖 transform 命令。











