无论这种方法是否合适:
有没有办法让Sublime Text能够突出显示不带引号的属性的HTML语法?即
<div class=foo data-label=bar>
我已设法修复导致不带引号的id
属性的问题,以便按照these instructions打破整个文档的语法。
然而,这仍然不允许语法突出显示我所追求的不带引号的属性。
有什么想法吗?
答案 0 :(得分:5)
不带引号的属性值语法突出显示不起作用的原因是因为Sublime正在查找带引号的字符串。没有引号,没有任何字符串正则表达式匹配。要解决此问题,您必须添加entity.other.attribute-value.html
中包含的新范围meta.tag
,开始在=
匹配,匹配[0-9a-zA-Z-_]
一次或多次,并在空格或>
停止匹配。然后,您可以将此新范围添加到您的配色方案中并相应地突出显示它。
答案 1 :(得分:3)
我想说,任何使这种情况发生的企图都是不一致的。原因如下:
<img src="whatever" alt="This is some text" class="something" />
<img src=whatever alt=This is some text class=something />
<img src=whatever alt=This is some text with > in it class=something />
查看突出显示第二个的方式?您放入的任何正则表达式不仅需要能够告诉您文本的内容,还需要告诉它的 intent ,否则它将无法分辨属性值的停止位置。即使在这里,你和我都知道第二个应该突出显示,但正则表达式无法以这种方式读取它。然后是第三个......
如果您要为此向Sublime添加正则表达式,则可能无法正确突出显示。这就是文本编辑器被编程为寻找封闭字符串的原因;因为当一个字符串被“标记”包围时,就不会猜到字符串的结束位置。
答案 2 :(得分:1)
这实际上是一场很好的辩论
实际上有很多标签都带有没有值的属性
<input type="text" name="country" value="Norway" readonly>
需要注意的要点是readonly
这是有效的HTML语法,因为属性没有=
,也没有任何值values
所以升级只读不应该在那里
考虑到这一点,应该考虑额外的努力
同样,对于输入,我们还有一个这样的attrible disabled
<input type="text" name="country" value="Norway" disabled>
让我们尝试以几种方式键入两者并检查SO如何响应
<input type=text value=blah blab readonly>
检查第二个标记是否为红色。
所以这是肯定的,所以我相信带空格的属性值应该引用其他编辑器或标记浏览器shell会将其视为其他属性。
没有值的属性&#39; =&#39;也被认为是。
但是根据我的说法
<input type=text value= blab readonly>
以上值=应该升级为语法错误; SO仍将其标记为蓝色
最后再尝试一下
<input type=text value= readonly>
再次参见上文,readonly标记为蓝色表示其将readonly视为属性的值,但实际上它是一个立即属性&amp;应该升华
现在你如何决定天气升华与否?
上面的O / p在图中
这意味着浏览器shell将其解释为值,而不是属性和文本框仍然可编辑