简体   繁体   English

使用 colors 作为变量存储在 vimscript 中?

[英]Using colors stored as variables in vimscript?

I am trying to import variables set in another.vim file and use them in my script.我正在尝试导入在 another.vim 文件中设置的变量并在我的脚本中使用它们。

The fist script colors-wal.vim拳头脚本colors-wal.vim

" Special
let wallpaper  = "cyb285r5j1w31.png"
let background = "#020303"
let foreground = "#e2cdc2"
let cursor     = "#e2cdc2"

" Colors
let color0  = "#020303"
let color1  = "#B09747"
let color2  = "#A1A958"
let color3  = "#ACB258"
let color4  = "#D09B60"
let color5  = "#E8D36E"
let color6  = "#D7AF94"
let color7  = "#e2cdc2"
let color8  = "#9e8f87"
let color9  = "#B09747"
let color10 = "#A1A958"
let color11 = "#ACB258"
let color12 = "#D09B60"
let color13 = "#E8D36E"
let color14 = "#D7AF94"
let color15 = "#e2cdc2"

"My" script taken from wal.vim and updated to work with termguicolors “我的”脚本取自 wal.vim 并更新为与 termguicolors 一起使用

hi clear
set background=dark

if exists('syntax_on')
syntax reset
endif

" Colorscheme name
let g:colors_name = 'wal-test'

source ~/.cache/wal/colors-wal.vim

let g:theTest=color1

hi Normal ctermbg=NONE guifg=color7 ctermfg=7
hi NonText ctermbg=NONE guifg=color0 ctermfg=0
hi Comment ctermbg=NONE guifg=color8 ctermfg=8
hi Conceal ctermbg=NONE
hi Constant ctermbg=NONE guifg=color3 ctermfg=3
hi Error guibg=color1 ctermbg=1 guifg=color7 ctermfg=7
hi Identifier ctermbg=NONE guifg=color1 ctermfg=1 gui=BOLD cterm=BOLD
hi Ignore guibg=color8 ctermbg=8 guifg=color0 ctermfg=0
hi PreProc ctermbg=NONE guifg=color3 ctermfg=3

I truncated the script and removed most comments, but there are no errors given by Vim and its just more of the same.我截断了脚本并删除了大部分评论,但 Vim 没有给出任何错误,只是更多的相同。 The colorscheme is set properly because when I unset it I get nvims native color scheme. colorscheme 设置正确,因为当我取消设置它时,我得到 nvims 本机配色方案。

:echo theTest Returns #B09747 :echo theTest返回#B09747

:hi Normal ctermbg=NONE guifg=#B09747 ctermfg=7 changes the normal text color as expected. :hi Normal ctermbg=NONE guifg=#B09747 ctermfg=7按预期更改正常文本颜色。

:hi Normal ctermbg=NONE guifg=theTest ctermfg=7 does "nothing", it will unset the command above. :hi Normal ctermbg=NONE guifg=theTest ctermfg=7 “什么都不做”,它将取消设置上面的命令。

I am not sure what exactly to try.我不确定到底要尝试什么。 I though maybe concatenation, so i did guifg=. theTest我虽然可能是串联,所以我做了guifg=. theTest guifg=. theTest , but it returns an error that says E416: missing equal sign, which I have looked up, but am maybe to novice to understand. guifg=. theTest ,但它返回一个错误,指出 E416:缺少等号,我已经查过,但新手可能无法理解。 Any ideas?有任何想法吗?

Unless there is another way, it must be run as a script in order to substitute the variable meaningfully.除非有另一种方法,否则它必须作为脚本运行才能有意义地替换变量。

For example例如

:hi Normal ctermbg=NONE guifg=theTest ctermfg=7

should be应该

:execute "hi Normal ctermbg=NONE guifg=". theTest. " ctermfg=7"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM