如何使用 Emmet 在 Sublime 中添加非 html 语法片段?

问题描述

旧的 emmet 工作正常,但现在我的 Sublime 已自动emmet 插件升级到最新版本,并且以下代码段不再起作用...

最新的 emmet 只能接受自定义片段的 HTML 语法

这些片段看起来很奇怪,因为这些是我的自定义标签,将在 Template Engine 中转换为 PHP 代码,因此代码不是 HTML 语法。

例如,当我输入 p1 并按 tab 时,我希望它给我 <!--{if }-->

{
    "config": {
        // Configure snippets/options for HTML Syntax only.
        // For a list of supported Syntaxes,check out keys of `Syntax_scopes`
        // dictionary of `emmet.sublime-settings`
        "html": {
            "snippets": {
                "p1": "<!--{if }-->","l1": "<!--{/if}-->","p2": "<!--{loop }-->","l2": "<!--{/loop}-->","p3": "<!--{eval }-->","p4": "<!--{block }-->","l4": "<!--{/block}-->","else": "<!--{else}-->","elif": "<!--{elseif }-->"
            }
        }
    }
}

解决方法

新 Emmet 接受片段值作为 Emmet 缩写(是的,递归),并且与原生 ST 片段一起玩得更好。因此,您应该将您的代码段添加为 ST 中的本机,或者如果您仍想将 Emmet 用于此类代码段,您应该将它们编写为有效的 Emmet 缩写。要以 Emmet 缩写输出任意文本,您应该将其写为文本节点,例如用 {} 包裹起来。

因此,您的代码段应如下所示:

"p1": "{<!--{if }-->}"

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...