2
"snippet with class binding":{
    "prefix": "row.${variable}",
    "body":[
        "<table class=\"row ${same_variable_here}\">",
        "\t<tr>",
        "\t\t<td>",
        "\t\t\t$0",
        "\t\t</td>",
        "\t</tr>",
        "</table>"
    ]
}

是否有可能(以及如何)创建像some_entity.classname这样的变量 扩展成这样的东西(例如在 html 中):

<div class="classname"></div>
4

1 回答 1

3

看起来你有两个问题。是的,emmet 扩展会自动 div.myClass变成<div class="myClass"></div>. 参见vscode 中的 emmet

您的另一个问题是关于完整表格扩展的 emmet 片段。请参阅自定义 emmet 片段。在您的 settings.json 中,您将需要:

  "emmet.extensionsPath": "C:\\Users\\Mark\\.vscode\\extensions"

这应该指向一个文件夹,其中包含您将创建的名为snippets.json. 在那个文件里放:

{
  "html": {
    "snippets": {
        "tableR": 
          "table.row.$1>tr>td"
    }
  }
}

使用除“ tableR”之外的任何前缀。然后你必须重新加载vscode。然后键入您的前缀和选项卡以展开(假设您的设置中有 emmet 选项卡扩展设置。]

[编辑]:根据您在下面的评论,也许您正在寻找像带有键绑定的片段一样简单的东西:

{
    "key": "ctrl+alt+n",
    "command": "editor.action.insertSnippet",
    "when": "editorTextFocus",
    "args": {
      "snippet": "${TM_SELECTED_TEXT/(.*)\\.(.*)/<$1 class=\"$2\"><\\/$1>/}"
    }
},

因此,如果您选择 anyTag.someClass成为<anyTag class="someClass"></anyTag> 当您使用您选择的任何键绑定时。这里不涉及 Emmet,这只是您的 keybindings.json 中的一个简单的键绑定(如果您愿意,可以将其限制为某些语言)。Emmet 扩展不允许您转换其前缀(上面的正则表达式),就像普通片段可以获取选择或当前单词并对其进行转换一样。

于 2018-08-15T14:48:06.640 回答