You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

VSCode正则替换驼峰式为短横线式及Vue属性统一格式化方案

我来帮你一步步搞定这两个问题,都是VSCode里正则替换的常见场景,操作起来很直观:

问题1:VSCode中将驼峰式字符串批量转为短横线式

这是正则替换的经典用法,几步就能搞定:

  • 打开VSCode的查找替换面板(快捷键Ctrl+H
  • 点击面板右上角的.*按钮,开启正则表达式模式
  • 在「查找」框中输入:([a-z])([A-Z])
    • 解释:这个正则匹配小写字母后跟大写字母的驼峰分界点,([a-z])把第一个小写字母捕获为分组1,([A-Z])把后面的大写字母捕获为分组2
  • 在「替换」框中输入:$1-\L$2
    • 解释:$1保留分组1的小写字母,加短横线-\L$2把分组2的大写字母转为小写
  • 点击「全部替换」,如果有多层驼峰(比如camelCaseWithMoreWords),重复点击「全部替换」直到没有匹配结果,就能把所有驼峰转成短横线式(比如camel-case-with-more-words
问题2:Vue项目统一组件属性为:prop-name=""格式

针对你提到的三个痛点,我们分两步处理最清晰,也能完美覆盖所有情况:

步骤1:统一属性前缀为简写:prop-*

首先把所有v-bind:前缀替换为Vue官方推荐的简写:

  • 打开查找替换面板(Ctrl+H),不用开正则模式
  • 「查找」框输入:v-bind:
  • 「替换」框输入::
  • 点击「全部替换」,这样所有v-bind:prop-namev-bind:propName都会变成:prop-name:propName

步骤2:将驼峰属性名转为短横线式

现在只需要处理:propName这类驼峰格式的属性,同时解决你提到的三个问题:

  • 开启正则模式(点击.*按钮)
  • 「查找」框输入::([a-z])([A-Z])
    • 解释::([a-z])精准匹配属性前缀:后跟第一个小写字母(分组1),([A-Z])匹配后面的大写字母(分组2),前缀:被排除在属性名的捕获组外,只会保留不修改
  • 「替换」框输入::$1-\L$2
    • 解释:保留前缀:$1保留第一个小写字母,加短横线,\L$2把大写字母转小写
  • 重复点击「全部替换」直到没有匹配结果:比如:propNameWithMore会逐步变成:prop-nameWithMore:prop-name-with-more完美处理多单词驼峰属性

进阶:单正则一步处理所有情况(可选)

如果你不想分两步,也可以用一个正则匹配所有四种属性格式,直接替换:

  • 「查找」框输入:(v-bind:|:)([a-z])([A-Z])
  • 「替换」框输入:$1$2-\L$3
  • 同样重复点击「全部替换」,效果和分两步完全一致

补充:用codemod工具批量处理(Windows可用)

如果项目文件极多,手动替换麻烦,也可以用vue-codemod工具:

  • 先全局安装:npm install -g vue-codemod
  • 进入项目根目录,运行命令统一前缀:vue-codemod v-bind-shortcut src/**/*.html
  • 驼峰转短横线的规则没有内置,还是用VSCode的多次替换更快捷

内容的提问来源于stack exchange,提问作者Matthew Optional Meehan

火山引擎 最新活动