Попробуйте это:
"someName" : {
"prefix": "amd-module-name",
"body": [
"/// <amd-module name=\"${TM_DIRECTORY/(.*client[\\\\\\/])?([^\\/\\\\]*)([\\/\\\\])?/$2${3:+\/}/g}\/$TM_FILENAME_BASE\" />\n",
]
},
Это длинный, но достаточно мощный (и все эти необходимые двойные экранирования!).
Это будет обрабатывать каталоги с разделителями \ или / path.
[\\\\\\/]
означает либо \, либо / / (вам просто нужно 3 избежать обратной косой черты перед \ в фрагменте vscode и два перед /) !!
Так [^\\/\\\\]*
означает получить символыпока вы не нажмете косую черту.
Это регулярное выражение будет работать с любым количеством каталогов в разделе "client
".Частично спасибо global regex modifier g
.
d:\myrepo\client\store\subStore\calc.ts => <amd-module name="store/subStore/calc" />
Эта часть хороша: $2${3:+\/}
, что означает вставку соответствующей группы 2, и только если есть соответствующая группа 3, добавьте обратную косую черту /.Это включается в игру с учетом последнего каталога с файлом в нем и заменой захваченной группы 3 \ на /, как вы хотите.