VSCode原生不支持camelCase↔snake_case转换,因内置命令仅处理大小写而不识别分隔符;必须安装change-case插件,通过快捷键或命令面板实现可靠转换。
VSCode 原生不支持一键切换 camelCase ↔ snake_case,必须装插件才能可靠实现,且默认快捷键不覆盖所有常用格式。
为什么不能只靠原生命令做 camelCase/snake_case 转换
VSCode 内置的
和
只处理纯大小写,对单词分隔(如空格、下划线、连字符)无感知。比如选中
按大写,结果是
,不是
;反过来也一样——它根本不识别“蛇形”或“驼峰”结构。
命令面板里搜
仅首字母大写,对
→
这种无效,更不会去掉下划线。
原生命令只适合全大写/全小写/首字大写等简单场景
涉及分隔符转换(
↔
↔
)必须依赖插件解析词边界
不装插件时,手动正则替换易出错(比如误改字符串或注释里的下划线)
安装 change-case 后怎么用快捷键快速转 camelCase 或 snake_case
插件作者 wmaurer 提供了开箱即用的快捷键,但 macOS 和 Windows 默认键位不同,且
不在默认绑定里。
macOS:选中文本后,
→
,
→
Windows/Linux:
和
同理
和
需通过命令面板调用,或手动绑定快捷键
若快捷键没反应,先确认是否真的选中了文本(光标停在单词上但没选中,插件不触发)
绑定
快捷键示例(写入
):
VSCode 1.118
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
下载
多光标 + 跨行变量名批量转 snake_case 容易踩的坑
插件支持多光标,但转换逻辑严格按“当前光标所在位置的连续非空白字符”切分,不智能跳过引号、括号或点号。
选中
和
两处,执行
,前者变成
(点号阻断,只转
和
各自),后者才变
JSON 键名如
,若只选中
(不含引号),能正常转;若连引号一起选,会把引号也当文本参与转换,结果变成
—— 看似对,但实际是巧合
含数字的变量如
,插件转
得
(保留数字位置),但
会被转成
,缩写全小写,无法保留首字母大写逻辑
不选中任何文本时,change-case 的 toggle 功能到底怎么工作
这是插件最实用但最容易误解的功能:
命令不要求选中文本,它会自动识别光标所在单词,并根据其当前形态决定下一步动作。
光标停在
上(未选中),按绑定的 toggle 快捷键 → 自动转为
再按一次 → 回到
;停在
上则转为
但它只识别 ASCII 字母 + 数字 + 下划线/连字符组合,遇到
或
会失败,只处理第一个点前的部分
中文混排如
不会被识别为有效标识符,直接跳过
真正复杂的是混合命名风格的项目:既有
类名,又有
API 字段,还有
局部变量。这时候靠 toggle 容易翻错方向,建议明确用
或
替代,少依赖自动判断。
change-caseeditor.action.transformToUppercaseeditor.action.transformToLowercaseuser_nameUSER_NAMEuserNameTransform to Title Caseuser_profile_dataUser_profile_data_camel-snake_caseCmd+K Cmd+TcamelCaseCmd+K Cmd+CPascalCaseCtrl+K Ctrl+TCtrl+K Ctrl+Csnake_casekebab-casesnake_casekeybindings.json[{
"key": "cmd+k cmd+s",
"command": "changeCase.snakeCase",
"when": "editorTextFocus && editorHasSelection"
}]user.nameuser_profilesnake_caseuser.nameusernameuser_profile"userProfile"userProfile"user_profile"userId2snake_caseuser_id2XMLHttpRequestxmlhttp_requestchangeCase.toggleuser_nameuserNameuser_nameUserNameuser_nameuser.name.datauser[name]用户名DataPascalCasesnake_casecamelCasechangeCase.camelCasechangeCase.snakeCase