Vscode 片段变量
Posted
技术标签:
【中文标题】Vscode 片段变量【英文标题】:Vscode snippet variable 【发布时间】:2019-01-22 04:26:57 【问题描述】:"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>
【问题讨论】:
【参考方案1】:您似乎有两个问题。是的,emmet扩展会自动转
div.myClass
变成 <div class="myClass"></div>
。见emmet in vscode。
您的另一个问题是关于用于全表扩展的 emmet sn-p。见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 选项卡扩展设置。]
[编辑]:根据您在下面的评论,也许您正在寻找像带有键绑定的 sn-p 一样简单的东西:
"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 扩展不允许您转换其前缀(上面的正则表达式),就像普通的 sn-p 可以获取选择或当前单词并对其进行转换。
【讨论】:
emmet 扩展会自动将 div.myClass 变成 。请参阅 vscode 中的 emmet。 不是使用制表符,而是来自emmet短语) 请编辑您的问题。 “在具有自动填充变量的结构中”我可以猜到你的意思,但你应该用一个很好的例子在你的问题中明确说明。 所以,我认为您回答的编辑部分几乎可以满足我的问题。仍然很糟糕,sn-ps 本身不像 emmet。以上是关于Vscode 片段变量的主要内容,如果未能解决你的问题,请参考以下文章