当我在vim中加载特定文件时,如何激活colorscheme

时间:2013-08-03 19:25:50

标签: vim

我有很多R和Python文件,所有这些都是我同时处理的。我更喜欢使用不同的colorschemes,不仅适用于不同的文件类型,而且适用于不同类型的不同文件。这样我就可以在屏幕上轻松找到它们,并迅速将我的思想从一段代码转移到另一段代码。我可以在我的vimrc中自动执行此操作吗? filetype变量不是我想要的,因为已经有几个特定问题的答案。我想根据文件* name *。

更改colorschemes

例如,一个文件可以被称为bbg.r,而另一个文件可以被称为fx.r.请注意,这不是我对更改colorscheme感兴趣的扩展,它是针对个人文件,因此上述两个文件应调用不同的颜色方案。

2 个答案:

答案 0 :(得分:2)

为所有缓冲区加载颜色方案,但如果您只想在为sagb.r加载缓冲区时加载某种颜色方案,则可以使用以下colorscheme。

autocmd BufEnter sagb.r colorscheme <colorscheme_name>

然后如果您想在离开缓冲区时将colorscheme重置为默认值,可以使用

autocmd BufLeave sagb.r colorscheme <default_colorscheme>

一般

autocmd BufEnter <filename> colorscheme <colorscheme_for_file>
autocmd BufLeave <filename> colorscheme <default_colorscheme>

答案 1 :(得分:1)

您有两种常规机制可以为特定文件类型设置特定内容:

  • 自动命令,请参阅:help autocmd

  • ftplugins,请参阅:help ftplugin

然而,在这里,他们没有任何帮助,因为

Vim一次只能激活一种colorscheme。

另一方面,如果您使用单独的实例,则可以完美地使用不同的颜色方案。如果是这种情况,您可以执行以下操作:

function! FTColors()
    if &filetype == "python"
        colorscheme foo
    elseif &filetype == "r"
        colorscheme bar
    else
        colorschem baz
    endif
endfunction

autocmd BufNew,BufEnter * call FTColors()

或:

autocmd BufNew,BufEnter * colorscheme baz
autocmd BufNew,BufEnter *.py colorscheme foo
autocmd BufNew,BufEnter *.r colorscheme bar

(未经过彻底测试)