特定标识符或文件类型的双重匹配突出显示

Double match highlighting for specific identifiers or filetypes

在使用 https://github.com/plasticboy/vim-markdown 时,我发现降价 header 是 html 标识符。 h2 markdown header 有两个标识符与之相关:['mkdNonListItemBlck', 'htmlH2'].

我不确定我是否能够 "double" 匹配并定义该选择的颜色,或者我是否应该只执行 htmlh2 突出显示文件类型 markdown.

如果你想调整颜色,你需要找出哪个语法组导致突出显示。安装 SyntaxAttr.vim - Show syntax highlighting attributes of character under cursor 插件会更容易。或者试试哪个 :highlight 命令改变颜色。

许多语法脚本是分层的,即一个文本由多个语法规则匹配。如果不深入研究这个特定的 Markdown 语法,我猜想 mkdNonListItemBlock 是一个通用块,而 htmlH2 来自原始的 HTML 语法。


Rephrasing my last question: I only want to highlight htmlH2 if I'm in a markdown file. I was hoping to "double" match both groups and then set the highlight preference.

不幸的是,这是不可能的。 htmlH2 之类的高亮组是全局的;这就是为什么约定在它们前面加上文件类型 (html) 的原因。如果您重新定义颜色,那将始终适用于 HTML 和 Markdown。

您可以编写 :autocmd WinEnter 来在 HTML 和 Markdown 缓冲区之间来回切换它们(永远不要同时在拆分中查看),或者复制并粘贴语法内容从 syntax/html.vimsyntax/mkd.vim,然后将 htmlH2 重命名为 mkdH2,但我不推荐这两种 hack。