让Sublime Text将`<script type="text/html">`视为HTML

6

最近我一直在使用Knockout模板,并且我使用Sublime来完成它。但是我注意到一个问题,当使用需要在块中定义的模板时,就像这样:

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

它将内容视为Javascript处理,这意味着我错过了很多已安装的HTML工具。我希望它将该内容视为HTML而不是Javascript进行处理;是否有任何设置可以使用来实现此目的?

2个回答

18

我成功地找到了答案感谢iamntz在这里;诀窍很简单。对于Sublime Text 3:

  1. Open up Packages within your install directory, then find HTML.sublime-package and open it in 7zip (or your favorite archive tool)
  2. Find HTML.tmLanguage and open it for editing
  3. Find this line:

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

    and replace it with this one:

    <string>(?:^\s+)?(&lt;)((?i:script))\b(?!([^&gt;]*text/html[^&gt;]*|[^&gt;]*/>))</string>
    
很简单易懂;第二段代码中的文本/ HTML可以替换为任何模板类型,并且Sublime现在将其视为HTML进行阅读。这个修复程序也适用于您安装的任何HTML软件包。

1
HTML.sublime-package在哪里?我找不到它。 - CMCDragonkai
1
对于技术方面有挑战的人,以下是一些更详细的说明。打开文件后会创建一个压缩文件,然后您需要编辑该文件到我这里上面一行,因为我将其更改为text/template以便与backbone和underscore配合使用。 - 然后保存,接着在Mac上将zip文件重命名为HTML.sublime-package - 您需要单击“获取信息”以删除.zip扩展名,然后打开Sublime它应该可以正常工作。 - imaginethepoet
只需保存.tmLanguage文件,即可立即生效,无需重新启动或打开文件。 - jchook
2
在Ubuntu上,HTML.sublime-package文件可以在/opt/sublime_text/路径下找到。 - jvalanen
1
有一个很好的插件可以打开包资源 https://github.com/skuroda/PackageResourceViewer。当然,你可能认为这对于这个问题来说有点过头了。 - flapenguin
显示剩余5条评论

1
这似乎对于Sublime Text 3版本3103不再必要。只需确保您的脚本标记的type属性以"text/"开头,且不以"javascript"结尾,现在应该正确处理HTML。
编辑:
Sublime Text 3版本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

将"x-template"替换为您用于脚本标记模板的任何类型。

我在Sublime Text 3版本3176中遇到了同样的问题,在进行了三次更新后,我的HTML标记丢失了。 - Paulo Lima

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