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

Bir*_*ird 3 code-snippets visual-studio-code

目标

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

[
    "${1:SECTION NAME/(.*)/${1:/upcase}/}",
    "====================================\n$0"
]
Run Code Online (Sandbox Code Playgroud)

我想要以下结果:

<selection>SECTION NAME</selection>
====================================
Run Code Online (Sandbox Code Playgroud)

然后我输入:“我很绝望”。[标签]

I AM HOPELESS
====================================
<selection />
Run Code Online (Sandbox Code Playgroud)

差不多好了!!

我得到的最接近的是这个:

[
    "${1/(.*)/${1:/upcase}/} ${1:SECTION NAME}",
    "====================================\n$0"
]
Run Code Online (Sandbox Code Playgroud)

但我得到一个副本。

Mar*_*ark 7

只是为了避免一些挫折,占位符转换不适用于默认或选择语法。如:

"${1:foo/(.*)/$1:/upcase}/}"
"${2:|foo,bar|/(.*)/{1:/upcase}/}",
Run Code Online (Sandbox Code Playgroud)

当没有默认值或选择值时,它们确实有效。所以以下工作:

 "${3/(.*)/${1:/upcase}/}",
Run Code Online (Sandbox Code Playgroud)

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

  "${4:SECTION NAME}",      
  "${4/(.*)/${1:/upcase}/}",
Run Code Online (Sandbox Code Playgroud)

或者反过来也有效:

  "${3/(.*)/${1:/upcase}/}",
  "${3:SECTION NAME}",   
Run Code Online (Sandbox Code Playgroud)

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

请参阅讨论vscode 问题:占位符转换。没有关于支持默认/选择变量转换的工作正在进行中。