首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何突出显示代码块的标记与其内容不同?

如何突出显示代码块的标记与其内容不同?
EN

Stack Overflow用户
提问于 2019-07-24 04:19:25
回答 1查看 69关注 0票数 3

我有这样的代码:

代码语言:javascript
复制
<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>之间的含量为斜体蓝色。

我试过:

代码语言:javascript
复制
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

但未能做到以下几点:

并不是所有的内容都被正确地着色(即绿色侵入了所有的蓝色空间,以及红色空间的其余部分),也不是所有的标签都是粗体。

如果删除标记t1t2t3,就会得到以下信息:

这表明所有的文本彩色化都是正确的。我猜这意味着,在某种程度上,标记匹配给region的边界设置带来了麻烦。

问题:

  • 我做错什么了?
  • 正确的方法是什么?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-24 07:39:43

以下仅供参考。最好的答案是在评论部分,由@昵称。

解决方案是按以下方式添加keepend

代码语言:javascript
复制
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/的存在-版主可以随意重新定位,或者删除它-我只是贴出了答案,以防有帮助)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57175201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档