gpt4 book ai didi

vim - 如何以不同于其内容的方式突出显示代码块的标签?

转载 作者:行者123 更新时间:2023-12-01 12:52:53 25 4
gpt4 key购买 nike

我有这个代码:

<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

但失败如下:

enter image description here

并非所有内容都正确着色(即绿色占据了蓝色的所有空间,以及红色空间的剩余部分),并且并非所有标签都是粗体。

如果我删除标签 t1 , t2 , 和 t3 ,我明白了:

enter image description here

这表明所有文本着色都已正确完成。我想这意味着,不知何故,标签匹配给 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com