NSj*_*nas 1 visual-studio-code vscode-snippets
查看用户定义片段的vscode 文档,似乎使用正则表达式转换,您可以执行 if/else 条件。
但是,我似乎找不到任何这样的例子,而且我正在努力理解仅基于 BNF 的正确语法。
有人可以解释一下这个语法吗?
例如,
假设我有一个这样的片段:
"body": [
"let color = '${1|white,black|}';",
"let hex = '${???}';"
]
Run Code Online (Sandbox Code Playgroud)
如果color==white,我想要十六进制输出#fff,否则如果黑色#000。
这有效:
"color conditional": {
"prefix": "_hex",
"body": [
"let color = '${1};",
"let hex = '${1/(white)|(black)|(red)/${1:+#fff}${2:+#000}${3:+#f00}/}';" //works
],
"description": "conditional color"
},
Run Code Online (Sandbox Code Playgroud)
但是,一旦我尝试使用默认占位符和选项,例如
"let color = '${1|white,black|}';", // does not work
Run Code Online (Sandbox Code Playgroud)
显然,您不能对默认占位符值进行片段转换。请参阅有关占位符值问题的转换
我使用了更简单的if变换风格,所以在这里:
${1/(white)|(black)|(red)/${1:+#fff}${2:+#000}${3:+#f00}
Run Code Online (Sandbox Code Playgroud)
如果$[1}在这种情况下有第 1white组#fff,则将第1组(black)替换为#000,如果第 2 组替换为,等等。
你可以if/else (white)很容易地把它做成一个或不那么简单。
"let hex = '${1/(white)/${1:?#fff:#000}/}';" // any non-`white` entry will print `#000`.
Run Code Online (Sandbox Code Playgroud)
${1:? => 如果第 1 组(white)打印 #fff,否则打印#000
vscode 文档对这些条件替换不是很有帮助,如果您对它们的语法有更多疑问,请告诉我。
| 归档时间: |
|
| 查看次数: |
1964 次 |
| 最近记录: |