Unix Vim语法突出显示:使区域仅在一行上匹配

Unix Vim语法突出显示:使区域仅在一行上匹配,unix,vim,Unix,Vim,我已使用以下行定义了自定义文件类型: syn region SubSubtitle start=+=+ end=+=+ highlight SubSubtitle ctermbg=black ctermfg=DarkGrey syn region Subtitle start=+==+ end=+==+ highlight Subtitle ctermbg=black ctermfg=DarkMagenta syn region Title start=+===+ end=+===+ hig

我已使用以下行定义了自定义文件类型:

syn region SubSubtitle start=+=+ end=+=+
highlight SubSubtitle ctermbg=black ctermfg=DarkGrey

syn region Subtitle start=+==+ end=+==+
highlight Subtitle ctermbg=black ctermfg=DarkMagenta

syn region Title start=+===+ end=+===+
highlight Title ctermbg=black ctermfg=yellow

syn region MasterTitle start=+====+ end=+====+
highlight MasterTitle cterm=bold term=bold ctermbg=black ctermfg=LightBlue
我在此类文件中附上了我的所有标题,如下所示:

==== Biggest Heading ==== // this will be bold and light blue

  ===Sub heading === // this will be yellow 

    bla bla bla  // this will be normally formatted

然而,现在当我在代码中使用等号时,它认为它是一个标题。我是否可以强制比赛只在一条线上进行

更新:我之前的回答是错误的,你可以用一个区域来做,只要做就行了

syn region SubSubtitle start=+=+ end=+=+ oneline
请参见
:help syn oneline
:help syn arguments
。我猜这表明我现在不能运行vim,嗯


先前的答案

根据我对的理解,对于一个区域,这是不可能的。但是,您可以使用syn匹配来执行此操作:

syn match SubSubtitle /=\@<!=[^=]*==\@!/
您仍然可以在syn matches中进行匹配,因此,如果您有任何嵌套,它仍然可以工作

比如说

syn match Todo /\<TODO\>/ containedin=SubSubtitle,Subtitle,Title,MasterTitle contained
syn match Todo/\/containedin=包含子标题、子标题、标题、主标题

太棒了!谢谢,我知道我在浏览vim帮助时在某处看到了oneline,但是当您需要它们时,您永远找不到它们。
syn match Todo /\<TODO\>/ containedin=SubSubtitle,Subtitle,Title,MasterTitle contained