VS 代码片段 |占位符 + 转换

VS Code Snippet | Placeholder + Transform

目标

我找不到创建以下代码段的方法:

[
    "${1:SECTION NAME/(.*)/${1:/upcase}/}",
    "====================================\n[=10=]"
]

我想要以下结果:

<selection>SECTION NAME</selection>
====================================

然后我输入:"i am hopeless"。 [TAB]

I AM HOPELESS
====================================
<selection />

快到了!!

我得到的最接近的是:

[
    "${1/(.*)/${1:/upcase}/} ${1:SECTION NAME}",
    "====================================\n[=13=]"
]

但是我得到了一个副本。

只是为了避免一些挫折,占位符转换 notdefault 或 choice 语法上工作。如:

"${1:foo/(.*)/:/upcase}/}"
"${2:|foo,bar|/(.*)/{1:/upcase}/}",

它们在没有默认值或选择值时起作用。所以以下工作:

 "${3/(.*)/${1:/upcase}/}",

此外,如果默认变量未在初始制表位转换但随后在后续使用中转换,则您可以使用默认变量。所以以下工作:

  "${4:SECTION NAME}",      
  "${4/(.*)/${1:/upcase}/}",

或者反之亦然:

  "${3/(.*)/${1:/upcase}/}",
  "${3:SECTION NAME}",   

因此您可以提供一个默认值,但在另一个对同一制表位的引用之前不能对其进行转换。

查看讨论 vscode issues: placeholder transforms。没有关于支持 default/choice 变量转换的工作正在进行中的消息。