如何在VSCode代码片段中移除文件名特定词并转为kebab-case
解决方案
要实现移除文件名中的特定单词(如Plugin)并转换为kebab-case,你需要将移除操作和驼峰转换整合到同一个正则表达式中——VSCode的代码片段变量替换要求搜索部分是单一合法的正则,你之前的写法错误地拼接了两个正则,导致失效。
正确的代码片段表达式
${TM_FILENAME_BASE/(Plugin)|(^[A-Z])|([A-Z])/${1:?}${2:/downcase}${3:+-}${3:/downcase}/g}
表达式解析
- 正则部分:
(Plugin)|(^[A-Z])|([A-Z])- 捕获组1:匹配要移除的目标单词
Plugin - 捕获组2:匹配文件名开头的大写字母
- 捕获组3:匹配文件名中间的大写字母
- 捕获组1:匹配要移除的目标单词
- 替换模板:
${1:?}:如果捕获组1匹配到Plugin,则替换为空字符串${2:/downcase}:如果是开头的大写字母,直接转为小写${3:+-}${3:/downcase}:如果是中间的大写字母,先添加-,再转为小写
完整代码片段示例
{ "Kebab Case without Plugin": { "prefix": "kebab-no-plugin", "body": [ "${TM_FILENAME_BASE/(Plugin)|(^[A-Z])|([A-Z])/${1:?}${2:/downcase}${3:+-}${3:/downcase}/g}" ], "description": "Remove 'Plugin' from filename base and convert to kebab-case" } }
效果验证
输入文件名MyAppPlugin.ts,使用该代码片段会输出my-app,完全符合预期。
扩展:移除多个特定单词
如果需要移除多个单词(如Plugin和Component),只需修改正则的捕获组1:
${TM_FILENAME_BASE/(Plugin|Component)|(^[A-Z])|([A-Z])/${1:?}${2:/downcase}${3:+-}${3:/downcase}/g}
内容的提问来源于stack exchange,提问作者cyrus-d
相关产品推荐
相关产品推荐

