1

我有许多 R 和 Python 文件,我同时处理所有这些文件。我更喜欢有不同的配色方案,不仅适用于不同的文件类型,甚至适用于相同类型的不同文件。这样我就可以在我的屏幕上轻松找到它们,并迅速将我的注意力从一段代码转移到另一段代码。我可以在我的 vimrc 中自动执行此操作吗?filetype 变量不是我要寻找的,因为该特定问题已经有多个答案。我想根据文件*名称*更改颜色方案。

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

4

2 回答 2

2

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

autocmd BufEnter sagb.r colorscheme <colorscheme_name>

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

autocmd BufLeave sagb.r colorscheme <default_colorscheme>

一般来说

autocmd BufEnter <filename> colorscheme <colorscheme_for_file>
autocmd BufLeave <filename> colorscheme <default_colorscheme>
于 2013-08-03T19:36:17.813 回答
1

您有两种通用机制来为特定文件类型设置特定内容:

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

  • ftplugins,请参阅:help ftplugin.

但是,在这里,它们不会有任何帮助,因为

Vim 一次只能激活一个配色方案。

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

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

(未经彻底测试)

于 2013-08-03T19:49:20.357 回答