Visual Studio Snippet能否用TM_FILENAME从RELATIVE_FILEPATH提取命名空间
实现方案
该需求可以实现,VS Code Snippet的变量替换语法不支持在正则匹配段直接嵌套其他变量,所以你尝试的${RELATIVE_FILEPATH/(TM_FILENAME)//gi}写法无法生效,换个匹配逻辑即可:不需要显式调用TM_FILENAME,直接匹配RELATIVE_FILEPATH末尾的文件名部分剔除即可。
对应写法
针对Windows反斜杠路径场景:
${RELATIVE_FILEPATH/\\\\[^\\\\]+$//}
如果需要兼容Windows、macOS/Linux的跨平台路径,可使用兼容写法:
${RELATIVE_FILEPATH/[\\\\/][^\\\\/]+$//}
规则说明
- 正则先匹配路径末尾最后一个路径分隔符(反斜杠需要双重转义,所以写为4个反斜杠,兼容写法同时支持正/反斜杠)
- 再匹配该分隔符之后所有非分隔符字符,即完整文件名,完全等价于
TM_FILENAME的内容 - 末尾的
$限定只匹配路径最后一段,避免误替换路径中间的同名内容
该写法可以适配任意文件名,不需要硬编码固定字符串,最终输出结果就是你需要的上级路径。
内容的提问来源于stack exchange,提问作者Diederik Slob
相关产品推荐
相关产品推荐

