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