Sublime Text 2将下划线模板识别为HTML

时间:2012-03-11 12:45:26

标签: underscore.js sublimetext

所以,我使用了underscore.js模板,我必须将我的html模板放在脚本标签中,就像这样

<script id="contactTemplate" type="text/template">
    <img src="{{ photo }}" alt="{{ name }}" />
    <h1>{{ name }}<span>{{ type }}</span></h1>
    <div>{{ address }}</div>
    <dl>
        <dt>Tel:</dt><dd>{{ tel }}</dd>
        <dt>Email:</dt><dd><a href="mailto:{{ email }}">{{ email }}</a></dd>
    </dl>
</script>

但是崇高的文本2正在将内部代码作为常规js进行评估,我该如何改变呢?

提前致谢!

4 个答案:

答案 0 :(得分:69)

  1. 转到菜单中的"Browse Packages"(菜单项取决于您的平台)。
  2. 打开HTML/HTML.tmLanguage
  3. 更改此行(我的HTML.tmLanguage中的第286行):

    <string>(?:^\s+)?(&lt;)((?i:script))\b(?![^&gt;]*/&gt;)</string>

    到此:

    <string>(?:^\s+)?(&lt;)((?i:script))\b(?![^&gt;]*/&gt;)(?!.*type=["']text/template['"])</string>

  4. 现在,任何带有type="text/template"type='text/template'的脚本代码都会呈现为html而不是javascript。

答案 1 :(得分:9)

由于修改内置软件包并不简单,安全或可移植(特别是在ST3中),因此我将Matt York's更改拆分为自己的软件包。

它可通过Package Control获得,并在所有平台上支持Sublime Text 2和3。

HTML Underscore Syntax

答案 2 :(得分:3)

对于我们这些使用Sublime Text 3

的人

我认为我会将信息整合到更容易找到的内容中,因为没有任何答案或评论直接给我提供了我需要的解决方案。 Matt York的回答大多正确,但Shane N的解决方案更灵活:

<string>(?:^\s+)?(&lt;)((?i:script))\b(?![^&gt;]*/&gt;)(?!.*type=["']text/(temp‌​late|html)['"])</string>

您可以在C:\Program Files\Sublime Text 3\Packages内找到 HTML.sublime-package ,如PAEz所述。

<强>说明

  1. 像任何普通的zip文件一样提取 HTML.sublime-package 的内容
  2. 在您刚创建的新/ HTML目录中,打开HTML.tmLanguage并修改上述行(可能是第286行)
    1. 它应该在<key>begin</key>
    2. 之后
  3. 保存更改,然后将 HTML.tmLanguage 所在的/ HTML目录添加到新的zip文件中
  4. 删除旧的 HTML.sublime-package 文件
  5. 将文件类型从.zip更改为.sublime-package(确保在执行此操作时Sublime未运行)
  6. 你现在应该好好去 - 启动Sublime并查看你真棒的新突出显示的模板!

答案 3 :(得分:1)

对于我们这些使用Sublime Text 3的人来说,请使用插件&#34; PackageResourceViewer&#34;编辑HTML.sublime-package

PackageResourceViewer