将自定义代码片段添加到 Emmet

3

我正在使用Brackets的Emmet插件。在文件lib/AppSupport/Brackets/extensions/user/brackets-emmet/snippets.json中,我在正确的位置添加了以下行:

"clearfix":".clearfix:before, .clearfix:after { content: \" \"; display: table; } .clearfix:after { clear: both; } /* For IE 6/7 only */ .clearfix { *zoom: 1; }",

这样做确实可行,但并不是一个好的实践方式,因此我尝试在同一文件夹中创建另一个名为mysnippets.json的文件,其中包含以下简单示例:

{
  "css": {
    "snippets": {
       "test": "ok"
    }
  }
} 

但是它(保存/重新启动后)不起作用。

是否可以在同一文件夹中添加外部json文件?出了什么问题?


请查看 http://docs.emmet.io/customization/ 和 https://github.com/emmetio/brackets-emmet#extensions-support。 - Sergey Chikuyonok
6个回答

3
以下是Brackets的解决方案(在43版本上进行测试): http://circlewaves.com/blog/how-to-add-custom-snippets-to-emmet-for-brackets/ 你所需要做的就是创建一个名字以“snippets”开头的JSON文件,例如:snippets-mysnippets.json、snippets_team.json、snippets-php.json等,并将包含此JSON文件的扩展文件夹设置为Emmet选项:
在我的Mac电脑上,我添加了如下的内容:/Users/benoit/Documents/Brackets/ 并添加了snippets-css.json:
{
  "css": {
    "snippets": {
        "reset":"/* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 License: none (public domain) */\n  html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } \n/* HTML5 display-role reset for older browsers */\n article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; } body { line-height: 1; } ol, ul { list-style: none; } blockquote, q { quotes: none; } blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; } table { border-collapse: collapse; border-spacing: 0; }",
        "clearfix":".clearfix:before, .clearfix:after { content: \" \"; display: table; } .clearfix:after { clear: both; } /* For IE 6/7 only */ .clearfix { *zoom: 1; }"    }
  }
}

当我在Emmet的首选项下的扩展文件夹中添加路径(即/Users/skube/Documents/emmet/),然后重新启动Brackets时,Emmet菜单完全消失,Emmet停止工作。我只能通过删除/Users/skube/Application Support/Brackets/目录并重新安装Emmet来恢复它。 - skube
结果发现我的路径不正确,如果找不到 .json 文件,它将完全失败,而不是优雅地失败。 - skube
如果对任何人有帮助,你需要复制原始的snippets.json并进行修改。仅添加修改后的部分在我的情况下是不起作用的。 - Louis Philippe

1

打开brackets-emmet/main.js文件,在接近顶部定义一个变量,如下所示:

var userSnippets    = require('text!emmet/userSnippets.json');

然后找到这行:

emmet.loadSystemSnippets(snippets);

复制它并用以下内容替换:

emmet.loadSystemSnippets(userSnippets);

现在,在brackets-emmet/node_modules/emmet/lib/目录下创建名为userSnippets.json的文件。

在此处编辑您的自定义代码片段,最后按F5(command + r)刷新Brackets即可。

完成!:)


1
在我的Windows电脑上,我添加了Emmet插件的路径到Brackets编辑器的偏好设置中:
C:/Users/Andrew/AppData/Roaming/Brackets/extensions/user

在这个文件夹中,我创建了自己的 snippets.json 文件,并且它可以使用!

它对我有效,但你必须记住,资源管理器使用反斜杠,你需要将其替换为正斜杠。 - JanuszO

1
文档http://docs.emmet.io/customization/snippets/指导您创建一个扩展文件夹,并在其中放置snippets.json或snippets-*.json(其中*可以是任何名称)。在新的json文件中,您可以创建新的片段或覆盖标准snippets.json文件中的标准片段。在Emmet首选项中,输入扩展文件夹的路径。在Win 7中,路径名需要使用正斜杠。您的自定义snippets.json文件不会被更新覆盖。按照此过程,在Win 7上使用Brackets sprint 41可行。

感谢您的发布。这对我帮助很大。我一直在使用Brackets的Debug工具时遇到了一个错误,它说需要绝对路径,即使我已经指定了C:\blah\blah\blah。这证明是解决该问题的答案。 - fourpastmidnight

0

看起来 Emmet 扩展只从一个位置加载代码片段。因此,如果您想自定义代码片段,似乎唯一的选择是编辑该文件(并在更新扩展版本时重新应用您的编辑)。snippets.json 格式在此处得到官方文档支持:http://docs.emmet.io/customization/snippets/

如果 Emmet 支持单独的用户可编辑配置文件,那就太好了。也许值得 在 Emmet 扩展上提交问题 来请求这个功能...


0
"!!": "{<!DOCTYPE html>}>html[lang='dk']>(head>meta[charset='${charset}']+meta[http-equiv='X-UA-Compatible'][content='IE=edge']+meta[name='viewport'][content='width=device-width,initial-scale=1.0']+link[href=/css/bootstrap.min.css]+link:css+title>{titel})+(body>div.container>div.row>div.col-12)",

这对我有用,也可能对你有用,但使用时请自行承担风险!

将自定义的 docksnippet 添加到 Emmet:

1). 转到 帮助 --> 显示扩展文件夹。 2). 浏览到:C:\Users\daniel\AppData\Roaming\Brackets\extensions\user\brackets-emmet\node_modules\emmet\lib\snippets.json 并在编辑之前备份该文件!

3). 使用 Ctrl + F 搜索 snippts.json 中的 "html" 并查找 "abbreviations"。 4). 使用 hook 添加自定义模板:

"!!": "{}>html[lang='dk']>(head>meta[charset='${charset}']+meta[http-equiv='X-UA-Compatible'][content='IE=edge']+meta[name='viewport'][content='width=device-width,initial-scale=1.0']+link[href=/css/bootstrap.min.css]+link:css+title>{titel})+(body>div.container>div.row>div.col-12)",

5). 保存原始的 snippts.json 文件并使用扩展重新加载 (F5)。


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