我想在 HTML 以外的其他文件类型/语法模式中使用 Emmet。尤其是来自 Smarty 的 .tpl 文件和不同 CMS 的其他模板文件。有什么办法我也可以在这些文件中使用选项卡处理程序吗?我不喜欢在其他文件中按 CTRL + E,因为唯一的区别是文件扩展名和一些模板部分。
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) 在状态栏中看到它
snippets.json
您可以在 emmet 的文件夹中找到编辑(Packages\Emmet\emmet)
添加这个:
"tpl": {
"extends": "html"
},
更改tpl
为您希望启用 emmet 代码扩展的任何文件扩展名。
结尾也有例子haml
,你可以模仿。sass
snippets.json
您应该将新文件 snippets.json 放在 Emmet 的扩展目录中,而不是编辑原始的 snippets.json,通常是 ~/emmet,(您可以在 Emmet 的设置中将其更改为例如 ~/.atom/emmet)以获得更好的清晰度和生存能力升级/重新安装时的设置。然后只需添加部分:
{
"tpl": {
"extends": "html"
}
}
现在你应该将 "key": "setting.disable_tab_abbreviations_on_auto_complete" 更改为 "key": "setting.disable_tab_abbreviations" 因为它的工作