作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个代码:
<start-1>
some stuff here
<start-2>
some stuff here
</start-2>
<start-3>
some stuff here
</start-3>
some stuff here
</start-1>
我想按如下方式着色:
<start-1>
, </start-1>
为粗体红色。<start-1>
之间的内容和 </start-1>
以红色斜体显示。<start-2>
, </start-2>
以大胆的绿色。<start-2>
之间的内容和 </start-2>
为斜体绿色。<start-3>
, </start-3>
以粗体蓝色显示。<start-3>
之间的内容和 </start-3>
以蓝色斜体显示。我试过:
syntax region start1 start=/<start-1>/ end=/<\/start-1>/ contains=t1,start2,start3
syntax region start2 start=/<start-2>/ end=/<\/start-2>/ contained contains=t2
syntax region start3 start=/<start-3>/ end=/<\/start-3>/ contained contains=t3
syntax match t1 /<\/\?start-1>/ contained
syntax match t2 /<\/\?start-2>/ contained
syntax match t3 /<\/\?start-3>/ contained
hi t1 ctermfg=red cterm=bold
hi t2 ctermfg=green cterm=bold
hi t3 ctermfg=blue cterm=bold
hi start1 ctermfg=red cterm=italic
hi start2 ctermfg=green cterm=italic
hi start3 ctermfg=blue cterm=italic
但失败如下:
并非所有内容都正确着色(即绿色占据了蓝色的所有空间,以及红色空间的剩余部分),并且并非所有标签都是粗体。
如果我删除标签 t1
, t2
, 和 t3
,我明白了:
这表明所有文本着色都已正确完成。我想这意味着,不知何故,标签匹配给 region
带来了麻烦。知道他们的界限。
问题:
最佳答案
以下仅供引用。最佳答案在@nickspoon 的评论部分。
解决方案是添加keepend
如下:
syntax region start1 start=/<start-1>/ end=/<\/start-1>/ keepend contains=t1,start2,start3
syntax region start2 start=/<start-2>/ end=/<\/start-2>/ keepend contained contains=t2
syntax region start3 start=/<start-3>/ end=/<\/start-3>/ keepend contained contains=t3
syntax match t1 /<\/\?start-1>/ contained
syntax match t2 /<\/\?start-2>/ contained
syntax match t3 /<\/\?start-3>/ contained
hi t1 ctermfg=red cterm=bold
hi t2 ctermfg=green cterm=bold
hi t3 ctermfg=blue cterm=bold
hi start1 ctermfg=red cterm=italic
hi start2 ctermfg=green cterm=italic
hi start3 ctermfg=blue cterm=italic
(sry 不知道 https://vi.stackexchange.com/ 存在——版主可以随意重新定位或删除它——我只是发布了答案以防它有帮助)。
关于vim - 如何以不同于其内容的方式突出显示代码块的标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57175201/
有没有一种方法可以“标记”对象的属性,使它们在反射中“突出”? 例如: class A { int aa, b; string s1, s2; public int AA
我是一名优秀的程序员,十分优秀!