sublime如何一键将选中内容转换为常量命名(UPPER_SNAKE_CASE)?

10次阅读

sublime Text原生不支持UPPER_SNAKE_CASE转换,需安装Easytransform插件实现:调出命令面板→输入“Transform: To UPPER_SNAKE_CASE”执行;该插件轻量稳定,支持缩写识别与多种分隔符,优于正则临时方案。

sublime如何一键将选中内容转换为常量命名(UPPER_SNAKE_CASE)?

sublime text 没有内置 UPPER_SNAKE_CASE 转换功能

默认安装的 Sublime Text 不提供「选中文字 → 转为 UPPER_SNAKE_CASE」的一键操作。这不是配置遗漏,而是原生不支持——它只内置了 snake_casecamelCasePascalCase 等几种基础转换,UPPER_SNAKE_CASE(即全大写+下划线)被排除在外。

用插件 Package Control 安装 EasyTransform

最轻量、最稳定的方案是安装 EasyTransform 插件。它不依赖 python 环境,不修改核心逻辑,且支持精确匹配单词边界(避免把 getURL 错转成 GET_U_R_L)。

  • 按下 Ctrl+Shift+Pwindows/linux)或 Cmd+Shift+PmacOS),调出命令面板
  • 输入 Package Control: Install Package 并回车
  • 搜索 EasyTransform,点击安装
  • 安装完成后,选中文本,再按 Ctrl+Shift+P,输入 Transform: To UPPER_SNAKE_CASE 即可执行

手动触发时注意字符范围和分隔逻辑

EasyTransform 的转换行为依赖于你选中的内容是否含空格、连字符或大小写变化。它会自动识别单词边界,但以下情况需手动干预:

  • 选中 userLoginId → 正确转为 USER_LOGIN_ID
  • 选中 user-login-id → 也会转为 USER_LOGIN_ID(支持短横线作为分隔符)
  • 选中 XMLParser → 转为 XML_PARSER(保留缩写大写组合)
  • 但若选中 parseXMLData → 可能变成 PARSE_XMLDATA(误将 XMLData 当作一个词),此时建议先用 Ctrl+Alt+Shift+P 触发 Transform: Split CamelCase 预处理

不想装插件?用正则替换临时救急

适用于单次、小范围转换,不推荐日常使用(易出错、不可逆、不处理缩写):

Find: ([a-z])([A-Z])|([A-Z])([A-Z][a-z]) Replace: $1$3_$2$4

然后全选 → Ctrl+H 打开替换面板 → 粘贴上述内容 → 勾选 Regular Expression → 点击 Replace All → 再全选 → Ctrl+K Ctrl+U(转为大写)。

这个正则只能处理常见驼峰,对 iphoneURLParser 等边界 case 无能为力;而且一旦多点一次 Replace All,就可能产生双下划线 USER__LOGIN__ID

真正稳定可用的路径只有 EasyTransform。别在正则里反复调试边界条件,插件已覆盖 95% 的真实命名场景。唯一要记住的是:每次更新 Sublime 后,如果发现命令消失,重装一遍 EasyTransform 就行——它不绑定特定版本,但偶尔因缓存未加载。

text=ZqhQzanResources