Sublime Text:除了没有CTRL + E的HTML之外的其他文件中的Emmet选项卡处理程序?

时间:2013-04-15 17:25:24

标签: scope sublimetext2 emmet

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

4 个答案:

答案 0 :(得分:4)

Emmet限制某些已知文件类型的Tab处理程序,因为没有合理的方法来与ST本机代码段集成。例如。如果您尝试扩展,例如,foo缩写,Emmet不知道您是否要将其转换为<foo>标记,或者您希望扩展与此触发器关联的本机ST片段。因此,使用一些技巧来确定您要做的事情。虽然这可能适用于HTML,但在其他语言中,它可能会使用错误的触发器来惹恼你。

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

[{
    "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)

在状态栏中看到它

答案 1 :(得分:4)

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

添加:

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

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

haml结尾处有sasssnippets.json示例,您可以模仿它们。

答案 2 :(得分:1)

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

答案 3 :(得分:-1)

现在你应该将“key”:“setting.disable_tab_abbreviations_on_auto_complete”改为“key”:“setting.disable_tab_abbreviations”为它的工作