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
我也认为占位符转换中存在一些错误。
我正在尝试在 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
我也认为占位符转换中存在一些错误。