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

pix*_*rth 1 vim color-scheme

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

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

我不太了解 vimscript,尽管这些年来我已经到处阅读了基础知识,但我对它缺乏实用知识,因为我很少使用它。所以我想我应该接触社区。经过一番研究后,我尝试自己执行此操作,但以下代码失败:

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

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

谢谢!

- - - - 更新 - - - - -

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

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

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

Mat*_*att 5

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)]