VS代码:自定义摘要中的变量



如何创建将自动输入我输入的变量值的自定义片段?

我想要一个将创建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"
        ]
    }
}

相关内容

  • 没有找到相关文章

最新更新