sublime text需用正则手动实现驼峰转kebab-case:查找([a-z])([a-z])|([a-z])([a-z][a-z]),替换为$1$3-$2$4,勾选正则与区分大小写,先find all预览再替换。

Sublime Text 里没有内置驼峰转 kebab-case 功能
它不像 VS Code 那样有原生支持或一键插件,得靠正则 + 命令组合来实现。核心思路是:先用 Ctrl+H(Windows/Linux)或 Cmd+H(macOS)打开替换面板,手动输入正则匹配大小写字母边界,再替换成连字符加小写。
用正则批量替换驼峰为 kebab-case 的具体操作
这个正则要覆盖三种常见驼峰形式:camelCase、PascalCase、XMLHttpRequest 这类全大写缩写后接小写字母的情况。直接上能用的方案:
- 打开替换面板(
Ctrl+H),勾选.*(正则模式)和Aa(区分大小写) - 查找内容填:
([a-z])([A-Z])|([A-Z])([A-Z][a-z]) - 替换为:
$1$3-$2$4 - 全部替换前先点
Find All确认匹配是否合理,尤其注意缩写词(如HTTPResponse→HTTP-Response)
示例:userLoginTime → user-login-time;XMLHttpRequest → XML-Http-Request(这是合理结果,不是 bug)
为什么不用更“智能”的正则(比如自动处理缩写)?
因为 Sublime 的正则引擎不支持条件匹配、负向先行断言等高级特性,也没法调用 JS 函数做逻辑判断。强行塞进复杂正则反而容易漏匹配或误替换,比如把 iPhone 错切成 i-Phone。实际开发中,前端命名极少出现这种歧义词,人工扫一眼比写个不可靠的“全自动”方案更省时间。
立即学习“前端免费学习笔记(深入)”;
- 真正需要处理大量缩写的场景(如 API 字段名含
URLPath、IDList),建议先用上面正则跑一遍,再用Ctrl+F搜-[A-Z]{2,}找出可能异常的连字符位置 - 如果项目里缩写词固定(比如统一用
url、id),建议在替换前先全局把URL替成Url、ID替成Id,再跑主正则
别依赖插件,除非你清楚它怎么工作的
社区有叫 Case Conversion 或 AdvancedRename 的插件,但它们底层还是走同样正则逻辑,只是封装了界面。问题在于:一旦正则写死,就无法适配你的命名习惯(比如你要求 JSONData → json-data,但插件默认输出 j-s-o-n-data)。而且插件更新滞后,Sublime 升级后常出现兼容报错,错误信息通常是 AttributeError: 'NoneType' object has no attribute 'group' 这类空匹配异常。
- 遇到插件报错,第一反应不是重装,而是看它源码里的正则 —— 路径通常在
Packages/Case Conversion/convert.py - 真要用插件,优先选 GitHub star >500 且最近 6 个月有 commit 的,避免用只适配 Sublime Text 3 的老项目
最稳的路径始终是:记住那条两段式正则,配合 Find All 预览,手动确认关键替换。毕竟命名转换不是高频操作,而是一锤子买卖 —— 错一次,CSS 类名或 Vue 属性就失效一次。










