Sublime Text:如何在不使用CTRL + E的情况下在HTML以外的其他文件中使用Emmet Tab处理程序?

9

我希望在除了HTML之外的其他文件类型/语法模式中使用Emmet。特别是在Smarty的.tpl文件和其他不同CMS的模板文件中。 是否有办法在这些文件中也使用Tab键处理程序?我不想在其他文件中按CTRL + E,因为唯一的区别就是文件扩展名和一些模板部分。

4个回答

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是您的语法范围名称,在Mac上按Ctrl+Shift+P或PC上按Ctrl+Alt+Shift+P可以在状态栏中看到它。


如果您将source.ss作为作用域编写,那么您就错了:没有这样的作用域名称。 - Sergey Chikuyonok
当我按下CTRL+SHIFT+P时,这就是ST所显示的内容。这里有一张截图... http://project-point.de/source.ss.png - suntrop
在那种情况下,我正在使用 .ss 文件中的 SilverStripe 语法(https://github.com/benjamin-smith/sublime-text-silverstripe)。 - suntrop
不知道为什么 - 也许是重新启动解决了问题 - 但现在它正在工作 :-) 再次...非常感谢! - suntrop
对我来说没有用,但我从 Emmet 快捷键文件中复制并粘贴了 expand_abbreviation_by_tab 块,就像上面的那个一样,到用户快捷键文件中,并添加了我的新源 source.velocity,然后它就起作用了!自此发布以来可能有语法上的变化。 - jared_flack
显示剩余4条评论

4
你可以在Emmet文件夹(Packages\Emmet\emmet)中找到并编辑snippets.json文件。 添加以下内容:
"tpl": {
    "extends": "html"
},

tpl更改为您想要启用emmet代码扩展的任何文件扩展名。
snippets.json末尾还有hamlsass的例子,您可以模仿它们。

1

不要编辑原始的snippets.json文件,而应该将新的文件snippets.json放在Emmet的扩展目录中,通常是~/emmet(你可以在Emmet的设置中更改为例如~/.atom/emmet),这样可以更清晰地保存你的设置,并在升级/重装时保留。然后只需添加以下部分:

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

-1

现在你应该将 "key": "setting.disable_tab_abbreviations_on_auto_complete" 更改为 "key": "setting.disable_tab_abbreviations" 以使其生效


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接