visual-studio-code - vscode if/else 用户定义代码段中的条件
问题描述
查看用户定义片段的vscode 文档,似乎使用正则表达式转换,您可以执行 if/else 条件。
但是,我似乎找不到任何这样的例子,而且我正在努力理解仅基于 BNF 的正确语法。
有人可以解释一下这个语法吗?
例如,
可以说我有一个这样的片段:
"body": [
"let color = '${1|white,black|}';",
"let hex = '${???}';"
]
如果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"
},
但是,一旦我尝试使用默认占位符和选项,例如
"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 文档对这些条件替换不是很有帮助,如果您对它们的语法有更多疑问,请告诉我。
推荐阅读
- npm - 在代理后面安装 Angular
- python - 交互式窗口中的 Visual Studio Code Python 运行部分不起作用
- javascript - Javascript - 将日期转换为更易于阅读的内容(月份名称)
- class - ASP.NET Core Web API - 当类的成员是接口列表时,参数绑定不起作用
- ios - Fastlane 错误:`factory': [!] 找不到类 'adhoc' (RuntimeError)
- python - 向方程添加一个新值,直到满足条件
- sql - 无法向我创建的角色授予选择权限
- javascript - JS Promise.all 等待循环内的异步操作
- java - IntelliJ 中代码的自定义格式
- r - 根据列的第一个值对所有行进行子集