这有效:
"color conditional": {
"prefix": "_hex",
"body": [
"let color = '${1};",
"let hex = '${1/(white)|(black)|(red)/${1:+#fff}${2:+#000}${3:+#f00}/}';" //works
],
"description": "conditional color"
},
但是,一旦我尝试使用默认占位符和选择,例如
"let color = '${1|white,black|}';", // does not work
显然,您无法对默认占位符值进行片段转换。看关于占位符值问题的转换 https://github.com/Microsoft/vscode/issues/57052
我用的是比较简单的if
变换样式,所以这里:
${1/(white)|(black)|(red)/${1:+#fff}${2:+#000}${3:+#f00}
如果有一个组1$[1}
在这种情况下white
然后将第 1 组替换为#fff
如果第 2 组(black)
用。。。来代替#000
, etc.
你可以把它变成一个if/else
(white)
或者不太容易。
"let hex = '${1/(white)/${1:?#fff:#000}/}';" // any non-`white` entry will print `#000`.
${1:?
=> 如果组 1 (white)
print #fff
,否则打印#000
vscode 文档对这些条件替换不是很有帮助,如果您对其语法有更多疑问,请告诉我。