这有效:
"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
显然,您不能对默认占位符值进行片段转换。请参阅有关占位符值问题的转换
我使用了更简单的if变换样式,所以在这里:
${1/(white)|(black)|(red)/${1:+#fff}${2:+#000}${3:+#f00}
如果$[1}在这种情况下存在组 1,white则将该组 1替换为#fff,如果组 2(black)替换为#000,等等。
你可以if/else (white)很容易地做到这一点。
"let hex = '${1/(white)/${1:?#fff:#000}/}';" // any non-`white` entry will print `#000`.
${1:? => 如果第 1 组(white)打印 #fff,否则打印#000
vscode 文档对这些条件替换不是很有帮助,如果您对它们的语法有更多疑问,请告诉我。