【问题标题】:Vscode snippet variableVscode 片段变量
【发布时间】: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>

【问题讨论】:

    标签: visual-studio-code code-snippets template-variables


    【解决方案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。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    相关资源
    最近更新 更多