我正在尝试在我的_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中不起作用?
答案 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/
带有多行和全球旗帜。