加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 21:53:36 所属栏目:安全 来源:网络整理
导读:我正在尝试在Vimscript中创建一个autocmd,它根据我的需要设置了colorscheme的一些属性.具体来说,我正在尝试使NonText背景与常规背景颜色相同. 问题是,我不知道如何从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组,否则它将被实际显示.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读