为什么变量不能传递到MacVim:colorscheme函数?

时间:2013-01-31 16:26:51

标签: vim macvim

我想设置一个映射来遍历MacVim中的colorschemes列表。

理想情况下,我会有一系列颜色方案,如下所示:

let s:schemes = ['zellner','ron','morning','murphy','peachpuff','torte']

在函数中将colorscheme设置为此数组的索引:

colorscheme s:schemes[s:schemeindex]

然而,上述行不起作用。为什么?

相反,我使用了一种工作正常的解决方法:

function SwitchScheme()
    if s:schemeindex == 0
        colorscheme zellner
        s:schemeindex = 1
    elseif s:schemeindex == 1
        colorscheme ron
        s:schemeindex = 2
    ...
    endif
endfunction

我的问题是,有更清洁的方法吗?我想将变量传递给colorscheme setter函数,但这似乎不起作用。

这些方案名称是否常量,如果是,如何将它们分配给变量?

非常感谢。

1 个答案:

答案 0 :(得分:1)

:colorscheme:source之类的其他一些一样受限制,因为它按字面意思取得其余部分,即它不能使用VimL表达式作为参数。这种限制通常通过使用:execute来解决,例如

execute 'colorscheme '.s:mycolors[current]

这来自a color scheme switcher posted at the Vim Tips wiki