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

【讨论】:

emmet 扩展会自动将 div.myClass 变成 。请参阅 vscode 中的 emmet。 不是使用制表符,而是来自emmet短语) 请编辑您的问题。 “在具有自动填充变量的结构中”我可以猜到你的意思,但你应该用一个很好的例子在你的问题中明确说明。 所以,我认为您回答的编辑部分几乎可以满足我的问题。仍然很糟糕,sn-ps 本身不像 emmet。

以上是关于Vscode 片段变量的主要内容,如果未能解决你的问题,请参考以下文章

Vscode在使用变量之前转义斜杠

vscode 用户代码片段 vue初始化模板 Snippet #新加入开头注释 自动生成文件名 开发日期时间等内容

这几种 VSCode 扩展是我最喜欢的

vscode:添加环境变量code

vscode变量没有变色(高亮)

windows 修改环境变量后在 vscode 的终端不生效的解决方法