ОБНОВЛЕНИЕ : Мой предыдущий ответ был неправильным, вы можете сделать это с регионом, просто сделайте
syn region SubSubtitle start=+=+ end=+=+ oneline
См. :help syn-oneline
и :help syn-arguments
. Думаю, это показывает, что я не могу сейчас управлять vim, да?
Предыдущий ответ
Согласно моему прочтению синтаксиса : help , нет способа сделать это с регионом . Тем не менее, вы можете сделать это с помощью syn-match:
syn match SubSubtitle /=\@<!=[^=]*==\@!/
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /=\@<!/
* * * * * * * * * * * *1022* * * * * * * *1022* Не существует =
, непосредственно перед вашим матчем, а * 10 24 * говорит, что =
нет сразу после, так что это соответствует ровно одному =
, группе не- =
( не включая переводы строки - чтобы включить переводы строки, она должна быть \_[^=]
), а затем ровно одна =
.
Остальные похожи
syn match Subtitle /=\@<!=\{2}[^=]*=\{2}=\@!/
syn match Title /=\@<!=\{3}[^=]*=\{3}=\@!/
syn match MasterTitle /=\@<!=\{4}[^=]*=\{4}=\@!/
Вы все еще можете делать совпадения в пределах син-совпадений, поэтому, если у вас есть какое-либо вложение, оно все равно будет работать.
Например
syn match Todo /\<TODO\>/ containedin=SubSubtitle,Subtitle,Title,MasterTitle contained