9

我想在 HTML 以外的其他文件类型/语法模式中使用 Emmet。尤其是来自 Smarty 的 .tpl 文件和不同 CMS 的其他模板文件。有什么办法我也可以在这些文件中使用选项卡处理程序吗?我不喜欢在其他文件中按 CTRL + E,因为唯一的区别是文件扩展名和一些模板部分。

4

4 回答 4

4

Emmet 限制了某些已知文件类型的 Tab 处理程序,因为没有明智的方式与 ST 原生代码片段集成。例如,如果您尝试扩展,例如foo缩写,Emmet 不知道您是想将其转换为<foo>标签还是要扩展与此触发器关联的原生 ST 片段。所以使用一些技巧来确定你想要做什么。虽然这可能适用于 HTML,但在其他语言中它可能会因错误触发器而惹恼您。

如果您 100% 确定您的模板文件中不需要原生 ST 片段,您可以执行以下操作:打开用户的键盘映射文件(Key Bindings — User在 ST 中查找菜单项)并在其中添加以下代码:

[{
    "keys": ["tab"], 
    "command": "expand_abbreviation_by_tab", 
    "context": [
        {
            "operand": "SYNTAX SCOPE", 
            "operator": "equal", 
            "match_all": true, 
            "key": "selector"
        }, 
        {
            "match_all": true, 
            "key": "selection_empty"
        }, 
        {
            "operator": "equal", 
            "operand": false, 
            "match_all": true, 
            "key": "has_next_field"
        }, 
        {
            "operator": "equal", 
            "operand": false, 
            "match_all": true, 
            "key": "auto_complete_visible"
        }, 
        {
            "operator": "equal", 
            "operand": false, 
            "match_all": true, 
            "key": "setting.disable_tab_abbreviations_on_auto_complete"
        }, 
        {
            "match_all": true, 
            "key": "is_abbreviation"
        }
    ]
}]

您的语法的范围名称在哪里SYNTAX SCOPE,您可以通过按 Ctrl+Shift+P (Mac) 或 Ctrl+Alt+Shift+P (PC) 在状态栏中看到它

于 2013-04-17T21:09:39.033 回答
4

snippets.json您可以在 emmet 的文件夹中找到编辑(Packages\Emmet\emmet)

添加这个:

"tpl": {
    "extends": "html"
},

更改tpl为您希望启用 emmet 代码扩展的任何文件扩展名。

结尾也有例子haml,你可以模仿。sasssnippets.json

于 2013-12-25T03:15:29.597 回答
1

您应该将新文件 snippets.json 放在 Emmet 的扩展目录中,而不是编辑原始的 snippets.json,通常是 ~/emmet,(您可以在 Emmet 的设置中将其更改为例如 ~/.atom/emmet)以获得更好的清晰度和生存能力升级/重新安装时的设置。然后只需添加部分: { "tpl": { "extends": "html" } }

于 2014-08-17T09:31:02.923 回答
-1

现在你应该将 "key": "setting.disable_tab_abbreviations_on_auto_complete" 更改为 "key": "setting.disable_tab_abbreviations" 因为它的工作

于 2013-12-02T12:00:23.153 回答