我希望在除了HTML之外的其他文件类型/语法模式中使用Emmet。特别是在Smarty的.tpl文件和其他不同CMS的模板文件中。 是否有办法在这些文件中也使用Tab键处理程序?我不想在其他文件中按CTRL + E,因为唯一的区别就是文件扩展名和一些模板部分。
我希望在除了HTML之外的其他文件类型/语法模式中使用Emmet。特别是在Smarty的.tpl文件和其他不同CMS的模板文件中。 是否有办法在这些文件中也使用Tab键处理程序?我不想在其他文件中按CTRL + E,因为唯一的区别就是文件扩展名和一些模板部分。
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可以在状态栏中看到它。
"tpl": {
"extends": "html"
},
tpl
更改为您想要启用emmet代码扩展的任何文件扩展名。snippets.json
末尾还有haml
,sass
的例子,您可以模仿它们。不要编辑原始的snippets.json文件,而应该将新的文件snippets.json放在Emmet的扩展目录中,通常是~/emmet(你可以在Emmet的设置中更改为例如~/.atom/emmet),这样可以更清晰地保存你的设置,并在升级/重装时保留。然后只需添加以下部分:
{
"tpl": {
"extends": "html"
}
}
现在你应该将 "key": "setting.disable_tab_abbreviations_on_auto_complete" 更改为 "key": "setting.disable_tab_abbreviations" 以使其生效
source.ss
作为作用域编写,那么您就错了:没有这样的作用域名称。 - Sergey Chikuyonokexpand_abbreviation_by_tab
块,就像上面的那个一样,到用户快捷键文件中,并添加了我的新源source.velocity
,然后它就起作用了!自此发布以来可能有语法上的变化。 - jared_flack