"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>
看起来你有两个问题。是的,emmet扩展会自动将div.myClass
变成<div class="myClass"></div>
。见emmet in vscode。
您的另一个问题是关于全表扩展的emmet片段。见custom emmet snippets。在您的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扩展不允许您将其前缀(上面的正则表达式)转换为普通代码段可以抓取选择或当前单词并对其进行转换的方式。