#!@ 关键字的布尔值 vim

Boolean for #!@ keywords vim

我正在尝试在我的 _vimrc 等中执行语法高亮正则表达式以在注释中高亮显示特定命令以获得视觉提示。

匹配应该是 \s 后跟 #! 然后是 \s\S 然后是任何东西直到下一个 \s 后跟 #! 然后 \s

例如,以下行应与我想要突出显示的粗体部分相匹配。

================================

" 到运行这个使用# <leader>R !执行命令

#highlight # 各种项目

" 另一种方法是 # highlight #

=================================

到目前为止我已经试过了

syn match myhelpComment "\s#\|!\(\s\|\S\)\+[#!]\s"

上面的正则表达式匹配 \s# 但不匹配下面的 \s! 但不匹配它们之间的文本。

syn match myhelpComment "\s#\|!\(\s\|\S\).*\s[#!]\s"

上面的正则表达式匹配下面不完全正确的粗体区域

" To run this use#R! `执行命令

" another way is to # highlight #

这在 help.vim 中有效,但在 vim.vim 中无效,我完全不知道为什么

syn match myhelpComment     "\s[:#!].\{-}\s[:#!]\s" --- Works in help.vim

但是vim.vim和

中的以下内容
syn match myvimSpecial      "\s[:#!].\{-}\s[:#!]\s"
hi def link myvimSpecial        mySpecial

syncolor.vim

SynColor mySpecial  term=bold cterm=NONE ctermfg=LightRed ctermbg=LightBlue gui=NONE guifg=LightRed guibg=#E6E600

关于如何获得我想要工作的正则表达式或为什么在 help.vim 中有效但在 vim.vim 中无效的任何建议?

The match should be \s followed by either a # or ! then a \s or a \S then anything until the next \s followed by either a # or a ! then a \s

我想你需要这样的东西

/(^|\s)[!#][\s\S]\S+\s[#!]\s/

具有多行和全局标志。

在帮助中有效但在 Vim 文件中无效的原因是您的定义干扰了默认的 syntax/vim.vim 定义。由于您想在 comments 中匹配,您的 :syn match 必须是 containedin=... 相应的评论组:

syn match myvimSpecial      "\s[:#!].\{-}\s[:#!]\s" containedin=vimLineComment