Sublime Text语法突出显示正则表达式不起作用

时间:2014-10-17 03:36:24

标签: html regex tags sublimetext2 syntax-highlighting

我使用angularJS,并且有各种指令遵循命名约定,如“app-data-grid”,“app-slider”,“app-carousel”或“app-compile-some-template”等。 ,它是[app name]-[dash delimited words]的正常角度指令命名约定。 Sublime Text HTML语言语法突出显示与其正则表达式不正确匹配。它会突出显示"<app-carousel""<app-some-long-directive-name"中的“应用”,但不会突出显示整个代码名称。

以下是HTML.tmLanguage文件中的预定义正则表达式:

(&lt;)([a-zA-Z0-9:]++)(?=[^&gt;]*&gt;&lt;/\2&gt;)

我尝试在第二个匹配组的冒号后面添加一个破折号:

(&lt;)([a-zA-Z0-9:-]++)(?=[^&gt;]*&gt;&lt;/\2&gt;)

第二个正则表达式在正则表达式测试中工作,但在Sublime Text中不起作用。

另外,我已经下载了一个AngularJS插件,它给了我一个AngularJS-HTML语言定义......它也有同样的问题。

如何修复正则表达式以使其与完整标记名称匹配以突出显示?

3 个答案:

答案 0 :(得分:4)

转到首选项&gt;&gt;设置 - 用户。

在这个JSON上添加一个名为“HTML”的ignored_pa​​ckages数组,如下所示:

"ignored_packages":
    [
        "Vintage",
        "HTML"
    ]

保存文件。

现在转到偏好设置&gt;&gt;浏览Packeges,复制HTML目录并将其重命名为“HTMLAngularJS”。

输入HTMLAngularJS目录并将文件“HTML.tmLanguage”重命名为“HTMLAngularJS.tmLanguage”。

编辑“HTMLAngularJS.tmLanguage”文件,找到这两个正则表达式:

<string>(&lt;)([a-zA-Z0-9:]++)(?=[^&gt;]*&gt;&lt;/\2&gt;)</string> Line 45

and

<string>(&lt;/?)([a-zA-Z0-9:]+)</string> Line 514

只需添加斜杠和 - 双点后,应该是这样的:

<string>(&lt;)([a-zA-Z0-9:\-]++)(?=[^&gt;]*&gt;&lt;/\2&gt;)</string>

and

<string>(&lt;/?)([a-zA-Z0-9:\-]+)</string>

保存文件并开心!

问候!

答案 1 :(得分:1)

使用HTML Extended sublime插件

答案 2 :(得分:0)

您是否在用户设置中将HTML添加到ignore_package阵列? 使用该条目,您将覆盖默认的HTML语法包,因此强制sublime使用HTML.tmLanguage

我从this answer找到了BoundinCode,他解释了这一点,这实际上对我有用。