微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

编辑器 – Vimscript – 以编程方式从colorscheme获取颜色

我正在尝试在Vimscript中创建一个autocmd,它根据我的需要设置了colorscheme的一些属性.具体来说,我正在尝试使NonText背景与常规背景颜色相同.

问题是,我不知道如何从vimscript中获取colorscheme的背景颜色.

有人有主意吗?

编辑:

所以这就是我想要实现的目标.实际上有几件事:

>最初,我试图隐藏在所有不存在的线前面的“〜”.有人建议将它设置为与背景相同的颜色,所以我添加一个执行此操作的autocmd:hi NonText guifg = bg.
>在这之后,我意识到一些colorschems对于常规线和缓冲区的“不存在”部分具有不同的背景颜色.这是一个问题,因为我的autocmd将NonText颜色设置为与常规背景相同,而不是特殊的“不存在”背景.

而且,我决定即使没有整个“摆脱〜”问题,当缓冲区的不存在部分是不同的颜色时,我不喜欢它.

最后,我试图了解一般的vim colorschemes,因为我打算编写一个插件,需要一些其他技巧,比如从方案中找出颜色.

解决方法

这里有两种方法

>使用hi NonText.当然,并不是唯一的,但有:redir.我不会描述它更冗长,因为我个人不喜欢使用任何解决方案:redir有很多原因(它们是:1.需要解析2.没有嵌套重定向3.无法知道重定向是否有效).
>使用synIDattr()和hlID():

let bgcolor=synIDattr(hlID('NonText'),'bg#')

将“#rrggbb”形式的东西(在终端中只是“N”)分配给变量bgcolor,如果没有为该组定义背景,则分配-1.您可以使用它来构造:hi命令(常规背景应在normal组中定义).
>只需使用

hi link NonText Ignore

.除非您的colorscheme重新定义了Ignore组,否则它将被实际显示.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐