如何创建一个自定义代码段,该代码段将自动输入我在变量前缀中键入的值?
我想要一个可创建html起始标签注释块的代码段。例如,如果我输入/se hello
,我希望结果为
<!-- $var start-->
<!-- $var end-->
将$var
替换为“ hello”的地方。谢谢您的阅读!
答案 0 :(得分:1)
正如VSCode snippet docs所说的,它使用TextMate来为其片段提供动力。 TextMate使用$name
和${name:default}
形式的变量,幸运地提供了$TM_CURRENT_WORD
可能足以满足您的需求。但是,没有内置变量可以直接在代码段名称之后获取多个参数,即$arg1
和$arg2
作为变量。以为您可以对内插的Shell代码执行类似的操作,但不幸的是:
该代码段语法遵循TextMate的代码段语法,其中带有“内插外壳代码”的例外情况和使用\ 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"
]
}
}