如何检索状态行中使用的当前模式颜色突出显示?
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= 之间的水平分隔符之一,我个人会发现它突出显示混乱], 但你的里程显然不同...
我正在为 Vim 中的当前行添加一个自动突出显示,它与状态行中使用的当前模式颜色相匹配。到目前为止,如果找到一种方法来获得当前颜色是什么,我还没有取得太大的成功。
状态行的颜色是根据当前主题设置的,所以我宁愿动态设置当前行颜色而不是硬编码。
例如,我的几种模式颜色是:
Normal = Blue
Insert = Green
Visual = Red
我希望能够从当前主题中检索用于这些高亮显示的确切颜色代码,以便我可以设置一些简单的自动命令以将它们用于模式切换。
有没有办法轻松检索这些颜色?
您可以通过synIDattr()
查询高亮组的颜色和属性;您可以在 :help hlID()
.
如果您打算使用 cursorline 功能并且有一个单色状态行,它的 StatusLine
突出显示组由 autocmds 动态更改,只需链接两者 (:hi link CursorLine StatusLine
) 可能已经工作了。
PS:如果相同颜色的线可以代表当前行 或 [=25= 之间的水平分隔符之一,我个人会发现它突出显示混乱], 但你的里程显然不同...