Vim: 如何从选定的列表中随机分配一个配色方案?

Vim: How to assign a colorscheme at random from a selected list?

我有一些我非常喜欢的配色方案。我还发现它们之间的变化给我的工作增添了一些新鲜感。一段时间以来,我一直在手动更改,但很想将其自动化。

我想在我的 .vimrc 中添加一行,从预定义的白名单中分配随机配色方案。我用谷歌搜索并没有找到明显的答案,甚至还有一些关于 vimscript 中是否有 random 函数的争论。

我对 vimscript 了解不多,虽然多年来我到处阅读基础知识,但我对它没有实际的了解,因为我很少使用它。所以我想我应该接触社区。 经过一些研究后,我尝试自己做这个,但是下面的代码失败了:

let my_colorschemes = ['torte', 'Dark2' , 'ubloh']
colorscheme my_colorschemes[rand() % (len(my_colorschemes) - 1 ) ]
Cannot find color scheme 'my_colorschemes[rand() % (len(my_colorschemes)+ 1 ) ]'

谁能帮我解决这个问题?我在 vimscript 中似乎缺少一些基本概念...

谢谢!

--------更新--------

为了后代,在下面的正确答案之后,对我有用的代码是:

let my_colorschemes = ['torte', 'Dark2' , 'ubloh', 'znake']
execute 'colorscheme' my_colorschemes[rand() % (len(my_colorschemes) - 1 ) ]

我想我已经很接近了,但我不可能自己找出问题所在。

Vim 位在用户手册 (:h user-manual) 中有解释。相关第41章“编写Vim脚本”(:h usr_41.txt),第41.5节(:h 41.5)。

简而言之,只有少数命令接受表达式,而其他命令仅接受文字参数(顺便说一句。这就是为什么要写 :colo torte 而不是 :colo "torte" 的原因)。因此,要动态地编写命令,既需要构建命令的字符串表示形式,又需要对其重新求值。

所以变成了:execute 'colo' my_colors[rand() % len(my_colors)]