如何创建将自动输入我输入的变量值的自定义片段?
?我想要一个将创建HTML启动端标签注释块的摘要。例如,如果我键入/se hello
,我希望结果为
<!-- $var start-->
<!-- $var end-->
其中 $var
替换为"你好"。感谢您的阅读!
正如VSCODE摘要文档所说的那样,它使用Textmate为其摘要供电。TextMate使用$name
和${name:default}
表格的变量,幸运的是提供$TM_CURRENT_WORD
,这可能足以满足您的需求。但是,没有内置的变量可以直接在摘要名称之后获得多个参数,即$arg1
和$arg2
作为变量。认为您可以使用插值外壳代码产生类似的效果,但不幸的是:
摘要语法遵循'interpolated shell code'的例外,并使用 u;两者都不支持。
强调矿山
对于这个简单的示例,以下索引变量示例可能就足够了。
<!-- $1 start-->
$0
<!-- $1 end-->
$i
为您提供了一个值,您可以在每个选项卡之间进行。$0
是光标在末端的位置(默认情况下是摘要的末端(。您可以选择以下操作:
<!-- ${1: default text} start-->
$0
<!-- $1 end-->
它会开始看起来像:
<!-- default text start-->
<!-- default text end-->
选择了两个默认值用于编辑。
这一切都将在snippets.json
文件中看起来像这样:
{
"se": {
"scope": "html",
"prefix": "se",
"body": [
"<!-- ${1:default text} start-->",
"t$0",
"<!--$1 end-->"
]
}
}
正如@mark指出的那样,如果您希望它能适用于HTML,则可以使用$BLOCK_COMMENT_START
和$BLOCK_COMMENT_END
,每种语言都会有所不同。然后,摘要看起来像这样:
{
"se": {
// Leaving scope off will make it a global snippet
"prefix": "se",
"body": [
"$BLOCK_COMMENT_START ${1:default text} start $BLOCK_COMMENT_END",
"t$0",
"$BLOCK_COMMENT_START$1 end $BLOCK_COMMENT_END"
]
}
}