创建一个 VSCode 片段到 "Capitalize" 占位符制表位内的重复制表位

Creating a VSCode snippet to "Capitalize" a duplicate tabstop inside a placeholder tabstop

@Mark 已在下方回答了此问题,请不要将其标记为已关闭,需要“详细信息或清晰度”。看到答案,简洁准确的解决了我的问题。

我想创建一个 VSCode 用户代码段,这将帮助我在我的 html 中构建一个按钮元素。

我的问题是我需要将输出的占位符值大写。

这是我目前的进度:

现有代码段:

"<button type=\"${1|button,submit|}\" name=\"\" class=\"btn \">${3:}</button>"    

当前输出:

<button type="button" name="demo" class="btn demo">demo</button>

期望的输出:

<button type="button" name="demo" class="btn demo">Demo</button>

(唯一的区别是按钮文本中的“D”是大写的。)

注意:实施后,我需要一个解决方案,其中“演示”(在上面的示例中)将保留一个占位符,以便在必要时可以快速覆盖它!

尝试:

"<button type=\"${1|button,submit|}\" name=\"\" class=\"btn \">${3:${2/(.*)/${1:/capitalize}/}}</button>",

它进行大写,仍在 selection 上工作。我认为有一个错误——上面的代码应该可以工作,但最终的制表位 $3 没有按应有的方式 selected。如果我只是在 $2 转换之前的 $3 制表位中插入一个 space ,如下所示,它工作得很好 - 但这应该没有任何区别,但当然还有一个额外的 space在输出中:

   "<button type=\"${1|button,submit|}\" name=\"\" class=\"btn \">${3: ${2/(.*)/${1:/capitalize}/}}</button>",

如果没有人指出错误,我可能会提出一个问题。


"snippet5": {
  "prefix": "sn5",
  "body": [
     "<button type=\"${1|button,submit|}\" name=\"\" class=\"btn \">${3: ${2/(.*)/${1:/capitalize}/}}</button>",
  ],
  "description": "html button"
},

另一种方法,要求您将文本输入为 Demo - 注意此处大写,但 select 最终制表位正确无误,无需任何额外的 spaces:

"<button type=\"${1|button,submit|}\" name=\"${2/(.*)/${1:/downcase}/}\" class=\"btn ${2/(.*)/${1:/downcase}/}\">${3:}</button>",