【问题标题】:How do I activate a colorscheme when I load a specific file in vim在 vim 中加载特定文件时如何激活颜色方案
【发布时间】:2013-08-04 21:04:48
【问题描述】:

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

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

【问题讨论】:

标签: vim


【解决方案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

(未彻底测试)

【讨论】:

  • 是的,正是出于这个原因,我倾向于运行单独的实例(尽管 tabpagecolorscheme.vim 插件绕过了这个限制)。实际上,我希望更改颜色方案的单个文件(即使是相同的文件类型)。
【解决方案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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2013-05-03
    • 2021-07-19
    相关资源
    最近更新 更多