我正在尝试在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#')
Run Code Online (Sandbox Code Playgroud)
将表格中的内容"#rrggbb"(仅"N"在终端中)分配给变量bgcolor,或者-1如果没有为该组定义背景.您可以使用它来构造:hi命令(应在Normal组中定义常规背景).
只是用
hi link NonText Ignore
Run Code Online (Sandbox Code Playgroud)
.工作,除非你的色彩方案重新定义Ignore组,以便它实际上是显示.