如何检索状态行中使用的当前模式颜色突出显示?

How to retrieve the current mode color highlight used in the status line?

我正在为 Vim 中的当前行添加一个自动突出显示,它与状态行中使用的当前模式颜色相匹配。到目前为止,如果找到一种方法来获得当前颜色是什么,我还没有取得太大的成功。

状态行的颜色是根据当前主题设置的,所以我宁愿动态设置当前行颜色而不是硬编码。

例如,我的几种模式颜色是:

Normal = Blue
Insert = Green
Visual = Red

我希望能够从当前主题中检索用于这些高亮显示的确切颜色代码,以便我可以设置一些简单的自动命令以将它们用于模式切换。

有没有办法轻松检索这些颜色?

您可以通过synIDattr()查询高亮组的颜色和属性;您可以在 :help hlID().

找到示例

如果您打算使用 cursorline 功能并且有一个单色状态行,它的 StatusLine 突出显示组由 autocmds 动态更改,只需链接两者 (:hi link CursorLine StatusLine) 可能已经工作了。

PS:如果相同颜色的线可以代表当前行 [=25= 之间的水平分隔符之一,我个人会发现它突出显示混乱], 但你的里程显然不同...