Visual Studio 代码片段:如何在片段中转换用户输入?

Visual Studio Code Snippets: How to transform user input in snippet?

我正在尝试在 Visual Studio 代码中编写一个片段,输出如下内容:

console.log('variable: ', variable);

这很简单,就像:

 "Debug Labeled String": {
    "scope": "javascript",
    "prefix": "c,",
    "description": "Debug Labeled String",
    "body": [
      "console.log('', )",
    ]
  }

一个问题是,如果我正在调试的字符串中有单引号,它就不再是有效代码。所以我试图用任何东西替换第一个 </code> 内容中的单引号。根据 <a href="https://code.visualstudio.com/docs/editor/userdefinedsnippets#_variable-transforms" rel="nofollow noreferrer">the docs</a>,您可以将转换应用于变量。但是,我不知道如何将转换应用到用户变量。</p> <p>我试过了</p> <pre><code>"console.log('${1:/'//g}', );"

但这只是按字面意义输出 /'/ 代替 $1。我也试过做一些事情,比如捕获所有输入并按数字引用该捕获组:

"console.log('${1:/'//g}', ${1:/(.*)});"

但这也不管用。 Visual Studio 代码中是否可以转换用户输入的结果?

这对我有用:

"console.log('${1/'//g}', );",  

我刚刚删除了 :,这使它成为一个没有默认值的占位符,并且对占位符的转换很棘手。例如,这也有效:

 "console.log('${1/'//g}', ${1:default});"  // or
 "console.log('${1/'//g}', ${1:});"

我认为关键是您需要在某处使用未转换的占位符,然后转换才会起作用。未转换的占位符可以在转换版本之前或之后。因此这不起作用:

"console.log('${1/'//g}', ${1:default/'//g});"  // the second transform does nothin

我也认为占位符转换中存在一些错误。