vs代码片段:如何连续两次使用变量转换
vs code snippet: how to use variable transforms twice in a row
请参阅以下代码段:
"srcPath":{
"prefix": "getSrcPath",
"body": [
"$TM_FILEPATH",
"${1:${TM_FILEPATH/(.*)src.(.*)//i}}",
"${TM_FILEPATH/[\\]/./g}"
]
},
第 1-3 行的输出是:
D:\root\src\view\test.lua
view\test.lua
D:.root.src.view.test.lua
如何获得像 'view/test.lua' 这样的输出?
使用扩展名 File Templates,您可以插入包含一个变量和多个 find-replace 操作的“片段”。
使用键绑定:
{
"key": "ctrl+alt+f", // or any other combo
"command": "templates.pasteTemplate",
"args": {
"text": [
"${relativeFile#find=.*?src/(.*)#replace=#find=[\\/]#flags=g#replace=.#}"
]
}
}
目前只能通过键绑定或通过 multi command
(或类似方式)实现。将添加一个问题以使其也可以通过前缀实现。
还缺少一些标准变量。
试试这个片段:
"srcPath":{
"prefix": "getSrcPath",
"body": [
"$TM_FILEPATH",
"${TM_FILEPATH/.*src.|(\\)/${1:+/}/g}",
"${TM_FILEPATH/[\\]/\//g}"
]
}
.*src.|(\\)
将匹配包括 ...src\
路径信息在内的所有内容。我们没有将它保存在捕获组中,因为我们没有在转换的替换部分中使用它。
(\\)
匹配路径其余部分中的任何 \
- 需要 g
标志来获取它们。
替换:${1:+/}
这意味着如果 .*src.|(\\)
中有捕获组 1,则将其替换为 /
。请注意,我们不匹配 src\
之后的其余路径,只匹配可能跟随它的 \
。因此,不匹配其他路径部分只会让它们保留在结果中。
你在这一项上很接近:
"${TM_FILEPATH/[\\]/\//g}"
只需将任何 \\
替换为 \/
。
请参阅以下代码段:
"srcPath":{
"prefix": "getSrcPath",
"body": [
"$TM_FILEPATH",
"${1:${TM_FILEPATH/(.*)src.(.*)//i}}",
"${TM_FILEPATH/[\\]/./g}"
]
},
第 1-3 行的输出是:
D:\root\src\view\test.lua
view\test.lua
D:.root.src.view.test.lua
如何获得像 'view/test.lua' 这样的输出?
使用扩展名 File Templates,您可以插入包含一个变量和多个 find-replace 操作的“片段”。
使用键绑定:
{
"key": "ctrl+alt+f", // or any other combo
"command": "templates.pasteTemplate",
"args": {
"text": [
"${relativeFile#find=.*?src/(.*)#replace=#find=[\\/]#flags=g#replace=.#}"
]
}
}
目前只能通过键绑定或通过 multi command
(或类似方式)实现。将添加一个问题以使其也可以通过前缀实现。
还缺少一些标准变量。
试试这个片段:
"srcPath":{
"prefix": "getSrcPath",
"body": [
"$TM_FILEPATH",
"${TM_FILEPATH/.*src.|(\\)/${1:+/}/g}",
"${TM_FILEPATH/[\\]/\//g}"
]
}
.*src.|(\\)
将匹配包括 ...src\
路径信息在内的所有内容。我们没有将它保存在捕获组中,因为我们没有在转换的替换部分中使用它。
(\\)
匹配路径其余部分中的任何 \
- 需要 g
标志来获取它们。
替换:${1:+/}
这意味着如果 .*src.|(\\)
中有捕获组 1,则将其替换为 /
。请注意,我们不匹配 src\
之后的其余路径,只匹配可能跟随它的 \
。因此,不匹配其他路径部分只会让它们保留在结果中。
你在这一项上很接近:
"${TM_FILEPATH/[\\]/\//g}"
只需将任何 \\
替换为 \/
。