sublime text无原生驼峰转kebab-case功能,需手动配置正则:查找([a-z])([a-z])|([a-z])(a-z),替换为$1$3-$2$4,须启用正则与区分大小写并预览匹配。

Sublime 里没有原生驼峰转 kebab-case 功能
所有“一键转 - 分隔”操作都依赖正则手动配置,不是菜单点一下就能出结果。VS Code 或 WebStorm 有内置支持,但 Sublime Text 必须自己写正则、开区分大小写、预览再替换——跳过任一环节,XMLHttpRequest 可能变成 x-m-l-http-request,而不是预期的 xml-http-request。
用正则批量替换 camelCase → kebab-case 的实操步骤
这个正则要覆盖三种常见情况:camelCase、PascalCase、XMLHttpRequest(全大写缩写+小写),不能只靠简单插横线。
- 按
Ctrl+H(Windows/Linux)或Cmd+H(macOS)打开替换面板 - 勾选
.*(正则模式)和Aa(区分大小写) - 查找内容填:
([a-z])([A-Z])|([A-Z])([A-Z][a-z]) - 替换为:
$1$3-$2$4 - 先点
Find All预览匹配项,确认没误伤字符串字面量或注释里的驼峰词 - 确认无误后点
Replace All
注意:getURL 会变成 get-u-r-l,这是正则默认行为;如需保留缩写,得额外加一步:先用 ([A-Z]+)([A-Z][a-z]) → _ 把 URLParser 拆成 URL_Parser,再走主流程。
为什么不能直接用 Convert Case 插件
Case Conversion 插件支持 snake_to_kebab 和 pascal_to_snake,但它**不提供 camel_to_kebab 命令**。插件内部逻辑把 camelCase 当作 PascalCase 的变体处理,但实际转换时仍走 title-case 切分,对 userProfileUrl 输出 user-profile-url 是凑巧,对 parseXMLData 就可能输出 parse-x-m-l-data。
- 插件命令名严格区分,
camel_to_kebab不存在,搜也找不到 - 它默认不启用大小写敏感匹配,
XML和xml被同等对待 - 多光标下每个光标独立执行,但若光标落在
userProfileUrl中间(比如停在Profile上),只转那一段,结果不可控
处理 CSS 类名时容易漏掉的关键点
CSS 类名常混在 HTML 属性、JS 字符串、模板语法里,批量替换前必须限定作用域,否则 class="userProfile" 变成 class="user-profile" 是对的,但 const className = "userProfile" 也被改就错了。
- 务必勾选
In Selection,先用Ctrl+Shift+F全局搜索class=或className:,把相关行复制到新 tab 再操作 - HTML 中的
data-*属性也要单独处理,它们也是 kebab-case,但命名来源可能是驼峰变量,需统一逻辑 - 替换后检查是否有多余连字符:如
http-status-code-v2正常,但user--profile(双连字符)说明原始驼峰里有连续大写字母或数字边界没处理干净 - Vue/React 模板里带插值的类名(如
:class="userProfile ? 'active' : ''")不能直接替换,得先提取变量名再单独转
真正难的不是写对正则,而是判断哪一段文本该进哪条流水线——CSS 类名、JS 变量、API 字段、HTML 属性,每种上下文的转换约束都不一样,混在一起批量搞,十次有八次要返工。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











