进入缓冲区时的Colorschemes

时间:2012-04-19 09:10:14

标签: colors buffer vim

我在 .vimrc 中有这个:

augroup filetype_colorscheme
        au BufEnter *
        \ if !exists('b:colors_name')
            \ | if &ft == "vim"
                \ | let b:colors_name = 'color_dark'
            \ | else
                \ | let b:colors_name = 'color_light'
            \ | endif
        \ | endif
        \ | exe 'colorscheme' b:colors_name
augroup END 

它做什么
当我打开 .vim页面时,会打开我的 dark colorscheme “color_dark.vim”
当我打开任何其他页面时,它会打开我的 light colorscheme “color_light.vim”

这是非常好的,但它在拆分窗口中不太好 每次当我点击分割窗口时,用p.e.一个文本文件,所有分割窗口都变成浅色的light colorsmeme(甚至是.vim文件) 当我在分割窗口中切换到vim文件时,其他分割窗口中的所有其他文件也会变暗。

是否可以在分割窗口中保留每个文件类型自己的colorscheme? 在上面的代码中我需要更改什么?

修改
如果这不可能,当我进入分割窗口时,是否可以禁用上面的代码? (为了让我自己选择colorscheme,所有分割窗口都一样)

1 个答案:

答案 0 :(得分:2)

Colorschemes将始终影响整个vim实例。每个分割窗口不可能有不同的颜色方案。

编辑1:要在编辑中回答您的第二个问题,您可以将&& winnr('$') == 1添加到第一个if,以便在您打开多个拆分窗口时阻止这种情况发生。

编辑2:糟糕,上面的编辑不起作用,但我认为将所有内容包装在另一个if中应该。

编辑3:错过了几根烟斗。

augroup filetype_colorscheme
        au BufEnter *
        \ | if winnr('$') == 1
                \ if !exists('b:colors_name')
                    \ | if &ft == "vim"
                        \ | let b:colors_name = 'color_dark'
                    \ | else
                        \ | let b:colors_name = 'color_light'
                    \ | endif
                \ | endif
                \ | exe 'colorscheme' b:colors_name
        \ | endif
augroup END