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