2013-01-31 55 views
0

我想设置一个映射来循环MacVim中的colorschemes列表。为什么变量不能传递给MacVim:colorscheme函数?

理想情况下,我有颜色方案的一个这样的数组:

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

而在色彩方案设置为这个阵列的索引的函数:

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

:colorscheme只是有限的,就像其他一些如:source一样,因为它直接从字面的其余部分开始,即它不能使用VimL表达式作为参数。该限制通常通过使用:execute来解决,例如,

execute 'colorscheme '.s:mycolors[current] 

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

相关问题