Visual studio 代码片段选择和变量
Visual studio code snippet choices and variables
我正在将自己的代码片段写到 console.log
{
"Print to console": {
"scope": "javascript,typescript",
"prefix": "debug",
"body": [
"console.log('${1|[Debug],[Server],[$TM_FILENAME]|}','${2:~Line: $TM_LINE_NUMBER ~ File:$TM_FILENAME}',${3:$TM_SELECTED_TEXT}); //debug",
""
],
"description": "Log output to console"
}
}
一切正常,除了文件名静态文本 TM_FILENAME 显示在占位符“$1”的选项中
${1|[Debug],[Server],[$TM_FILENAME]|}
。
我怎样才能让文件名显示在这里?
感谢建议
虽然您不能直接在片段选择中使用变量,但您可以像这样解决它:
"Print to console": {
"scope": "javascript,typescript",
"prefix": "debug",
"body": [
// moved brackets in the choice
"console.log('[${1|Debug,Server],fileName|}]','${2:~Line: $TM_LINE_NUMBER ~ File:$TM_FILENAME}',${3:$TM_SELECTED_TEXT}); //debug",
""
],
"description": "Log output to console"
},
"getfileName": {
"scope": "javascript,typescript",
"prefix": "fileName", // <= same exact prefix as appears in the choice above
"body": [
"$TM_FILENAME"
],
"description": "get the file name"
}
想法是 fileName
选择实际上是您在做出选择后可以触发的另一个片段。 select fileName
之后,您必须按 Ctrl+Space 才能调出第二个片段。这是一个多一点的工作,但它确实允许您在片段选择中获得“类似变量”的行为。在第二个片段中,您可以根据需要添加或修改文件名。
此外,有时您必须稍微修改一下选择。我修改了你的,但输出是一样的。否则 [fileName]
将被打印,并且不会被视为与其他 fileName
前缀的匹配。尽管在您的情况下,您可以将其保留为:
"console.log('${1|[Debug],[Server],[fileName]|}','${2:~Line: $TM_LINE_NUMBER ~ File:$TM_FILENAME}',${3:$TM_SELECTED_TEXT}); //debug",
在第一个片段中,然后像这样制作第二个前缀:
"prefix": "fileName]", // note the trailing bracket
相同的结果,请注意调整第二个前缀以匹配选项 selection 实际打印出的内容,否则它将不起作用。
我正在将自己的代码片段写到 console.log
{
"Print to console": {
"scope": "javascript,typescript",
"prefix": "debug",
"body": [
"console.log('${1|[Debug],[Server],[$TM_FILENAME]|}','${2:~Line: $TM_LINE_NUMBER ~ File:$TM_FILENAME}',${3:$TM_SELECTED_TEXT}); //debug",
""
],
"description": "Log output to console"
}
}
一切正常,除了文件名静态文本 TM_FILENAME 显示在占位符“$1”的选项中
${1|[Debug],[Server],[$TM_FILENAME]|}
。
我怎样才能让文件名显示在这里?
感谢建议
虽然您不能直接在片段选择中使用变量,但您可以像这样解决它:
"Print to console": {
"scope": "javascript,typescript",
"prefix": "debug",
"body": [
// moved brackets in the choice
"console.log('[${1|Debug,Server],fileName|}]','${2:~Line: $TM_LINE_NUMBER ~ File:$TM_FILENAME}',${3:$TM_SELECTED_TEXT}); //debug",
""
],
"description": "Log output to console"
},
"getfileName": {
"scope": "javascript,typescript",
"prefix": "fileName", // <= same exact prefix as appears in the choice above
"body": [
"$TM_FILENAME"
],
"description": "get the file name"
}
想法是 fileName
选择实际上是您在做出选择后可以触发的另一个片段。 select fileName
之后,您必须按 Ctrl+Space 才能调出第二个片段。这是一个多一点的工作,但它确实允许您在片段选择中获得“类似变量”的行为。在第二个片段中,您可以根据需要添加或修改文件名。
此外,有时您必须稍微修改一下选择。我修改了你的,但输出是一样的。否则 [fileName]
将被打印,并且不会被视为与其他 fileName
前缀的匹配。尽管在您的情况下,您可以将其保留为:
"console.log('${1|[Debug],[Server],[fileName]|}','${2:~Line: $TM_LINE_NUMBER ~ File:$TM_FILENAME}',${3:$TM_SELECTED_TEXT}); //debug",
在第一个片段中,然后像这样制作第二个前缀:
"prefix": "fileName]", // note the trailing bracket
相同的结果,请注意调整第二个前缀以匹配选项 selection 实际打印出的内容,否则它将不起作用。