#!@ keywords vim的布尔值

时间:2015-01-14 06:46:16

标签: regex vim vim-syntax-highlighting

我正在尝试在我的_vimrc等中使用语法高亮regex来突出显示视觉提示的注释中的特定命令。

匹配应为\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中不起作用?

2 个答案:

答案 0 :(得分:1)

在帮助中运行但不在Vim文件中的原因是您的定义会干扰默认的syntax/vim.vim定义。由于您希望在评论内进行匹配,因此您的:syn match必须是containedin=...相应的评论组:

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

答案 1 :(得分:0)

  

匹配应该是\ s后跟#或者!然后是\ s或\ S   然后任何事情,直到下一个\ s后跟一个#或一个!那么一个   \ S

我想你需要这样的东西

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

带有多行和全球旗帜。