VS Code代码片段问题:文件名转PascalCase并移除Impl后缀失效
问题排查与解决方案
你的问题出在VS Code代码片段不支持嵌套变量转换语法——你试图先把TM_FILENAME_BASE转成PascalCase,再对这个结果做Impl后缀移除,但这种嵌套的${${...}/.../}写法不会被解析,导致替换表达式直接被输出成了字符串。
修改后的代码片段
把两步转换合并到单个正则替换中,直接对TM_FILENAME_BASE完成格式转换和后缀移除:
"body": [ "class ${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g} implements ${TM_FILENAME_BASE/(.*)(Impl)$/${1:/pascalcase}/g} {", " final ${2:RemoteDataSource} remoteDataSource;", " ${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}({required this.remoteDataSource});", "}" ],
关键修改说明
- 对于
implements后的部分,用正则(.*)(Impl)$匹配文件名的主体部分和末尾的Impl后缀,仅对捕获组$1应用pascalcase转换,直接跳过Impl后缀,一步到位得到目标名称。 - 保留原有的
${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}用于类名(需要保留Impl后缀)。
测试验证
当文件名是home_repository_impl时,会输出预期结果:
class HomeRepositoryImpl implements HomeRepository { final RemoteDataSource remoteDataSource; HomeRepositoryImpl({required this.remoteDataSource}); }
内容的提问来源于stack exchange,提问作者Abdullah Mohamed
相关产品推荐
相关产品推荐

