sublime 的 title_case(ctrl+k, ctrl+c)仅按空格分割,不识别下划线、连字符或驼峰边界,故无法正确转换 user_name、apiv2 等变量名;它属标题式转换,非编程命名转换。

Sublime 没有真正意义上的“一键首字母大写”快捷键——Ctrl+K, Ctrl+C(title_case)只按空格切分,对 user_name、apiV2、XMLHttpRequest 完全无效,不能直接生成规范的变量名。
为什么 title_case(Ctrl+K, Ctrl+C)不适用于变量命名?
它不是语义识别,而是简单空格分割:输入 hello world → Hello World,但 user_name 仍为 user_name,get_user_data 不会变成 GetUserData。它不处理下划线、连字符、驼峰边界或数字混排,本质是“标题式转换”,不是“编程命名转换”。
- 仅识别空格为单词分隔符,无视
_、-、CamelCase内部结构 - 对带撇号的词(
don't)能保留,但对iPhone或user_id_2无感知 - 不会自动小写非首字母(如
USER_NAME→USER_NAME,而非User_Name)
用正则替换实现 snake_case → PascalCase(首字母大写)
这是最稳定、无需插件的方案,分两步执行(均在 Ctrl+H / Cmd+H 替换面板中操作,务必勾选 .* 正则模式):
- 第一步:把
_x变成X—— 查找_(\w),替换为\U$1(注意:\U必须配\E才安全,但此处只作用于单个捕获组,$1是单字符,\U$1已足够) - 第二步:删掉开头可能残留的下划线 —— 查找
^_+,替换为空(避免_id→Id后还需手动改首字母) - 若原始含连续下划线(
first__name),先运行一次查找__+替换为_清理 - 执行
Replace All后,结果如created_at→CreatedAt,user_profile_url→UserProfileUrl
如何快速转成 camelCase(首字母小写)?
在完成上一步 PascalCase 转换后,只需对首个字母单独小写即可。最简方式:
- 将光标移至行首,按
Ctrl+Shift+Right(Win/Linux)或Cmd+Shift+Right(macOS)选中第一个字母 - 执行
Ctrl+K→ 松手 →Ctrl+L(调用lower_case) - 或者直接正则:查找
^(\w),替换为\l$1(注意是小写 L,不是数字 1),再点Replace All - 注意:
\l$1只影响第一个捕获组的第一个字符,安全;误写成\L$1(全大写 L)会开启大写模式且无\E终止,导致后续文本异常
容易被忽略的硬性前提
所有大小写操作都卡在这几个地方,不是功能失效,而是环境没准备好:
- 输入法必须是英文状态——搜狗、微软拼音等中文输入法会吞掉
U/L/C键 - 文件右下角不能显示
RO(只读),否则操作静默失败,不报错也不生效 -
Ctrl+K是命令前缀,不是组合键:必须Ctrl+K→ 松手 → 单独按Ctrl+U,连按三键只会触发删行等冲突命令 - 正则替换中
\U和\L必须配\E使用(如\U$0\E),漏写\E会导致从匹配位置开始直到行尾全部变大写











