使Sublime Text将<script type =“text / html”>视为HTML </script>

时间:2013-06-17 21:01:42

标签: html sublimetext2 sublimetext3

我最近在Knockout模板上做了很多工作,而且我一直在使用Sublime来做这件事。我注意到的一件事是,当使用模板时,需要在这样的块中定义:

<script type="text/html"></script>

它将内容视为Javascript,这意味着我错过了我安装的许多HTML工具。我想让它将内容视为HTML而不是Javascript;我有什么设置可以用来做这个吗?

2 个答案:

答案 0 :(得分:18)

我找到了答案thanks to iamntz here;诀窍很简单。对于Sublime Text 3:

  1. 在安装目录中打开包,然后找到HTML.sublime-package并在7zip(或您最喜爱的存档工具)中打开它
  2. 查找HTML.tmLanguage并将其打开以进行编辑
  3. 找到这一行:

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

    并将其替换为:

    <string>(?:^\s+)?(&lt;)((?i:script))\b(?!([^&gt;]*text/html[^&gt;]*|[^&gt;]*/>))</string>
    
  4. 美好而轻松;第二个片段中的text / html可以替换为任何模板类型,现在它将被Sublime读取为HTML。此修复程序也适用于您安装的任何HTML包。

答案 1 :(得分:1)

对于Sublime Text 3 build 3103,这似乎不再是必要的。只需确保您的脚本标记的type属性以&#34; text /&#34;开头。并且不会以&#34; javascript&#34;结尾它现在应该正确处理HTML。

编辑:

Sublime Text 3 build 3176再次成为一个问题。修复方法是再次修改HTML包,但HTML.sublime-syntax中有此更改:

         - script-javascript
         - tag-generic-attribute-meta
         - tag-generic-attribute-value
-    - match: (?i)(?=text/html(?!{{unquoted_attribute_value}})|'text/html'|"text/html")
+    - match: (?i)(?=text/html(?!{{unquoted_attribute_value}})|'text/html'|"text/html"|"text/x-template")
       set:
         - script-html
         - tag-generic-attribute-meta

替换&#34; x-template&#34;使用您用于脚本标记模板的任何类型。