gpt4 book ai didi

unix - Vim 语法高亮 : make region only match on one line

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

我用这些行定义了一个自定义文件类型:

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,嗯?

上一个答案

根据我对 :help syntax的阅读,没有办法用一个区域来做到这一点。但是,您可以使用同步匹配来做到这一点:
syn match SubSubtitle /=\@<!=[^=]*==\@!/
/=\@<!/说没有 =比赛开始前, /=\@!/说没有 =紧随其后,所以这正好匹配一个 = ,一堆非 = (不包括换行符 - 要包括换行符,它必须是 \_[^=] ),那么正好是一个 = .

其余类似
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

关于unix - Vim 语法高亮 : make region only match on one line,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2462380/

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