首页 > 解决方案 > vim-highlight:无法匹配正则表达式lookbehind

问题描述

我正在尝试使用 vim 语法为我的 c++ 项目配置一些自定义突出显示。

我创建了一个名为的文件cpp.vim并将其放入~/.vim/syntax/. 为了突出显示函数名称,我把

syn match    cCustomParen    "?=(" contains=cParen,cCppParen
syn match    cCustomFunc     "\w\+\s*(\@=" contains=cCustomParen
hi CustomFunc guifg=NONE guibg=NONE guisp=NONE gui=bold ctermfg=lightyellow ctermbg=NONE cterm=bold    
hi def link cCustomFunc CustomFunc

进入文件cpp.vim,它按预期工作。

现在我试图突出显示类名。

这是我尝试过的:

hi CustomClassName guifg=NONE guibg=NONE guisp=NONE gui=bold ctermfg=lightyellow ctermbg=NONE cterm=bold
syn match cCustomClassName "(?<=^class\s)\w\+"
hi def link cCustomClassName CustomClassName

但是,类名仍然是白色的。

(?<=^class\s)\w\+正在尝试匹配一个单词,该单词跟在 aclass和一个空格之后。例如,这个正则表达式可以匹配诸如class Testignoring之类的东西class,这正是正则表达式lookbehind 应该做的。

我已经用一些在线工具测试了这个正则表达式,它运行良好。所以我不知道为什么它不适用于 vim 语法配置。

标签: regexvimsyntax-highlightingvim-syntax-highlighting

解决方案


推荐阅读