2012-04-19 136 views
2

我有这样的:Colorschemes当缓冲区

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的页面它打开我的暗色彩方案“color_dark.vim”
当我打开任何其他页面它打开我的light colorscheme“color_light.vim”

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

是否有可能在拆分窗口中保留每个文件类型自己的色彩方案?
我需要在上面的代码中更改什么?

编辑
如果无法做到这一点有可能禁用上面的代码,当我在拆分窗口中输入? (为了让我自己选择颜色方案,所有分割窗口都一样)

回答

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 
+0

tnx,请参阅我的更新信息 – Reman 2012-04-19 09:29:20

+0

在编辑答案的情况下评论不会触发您的通知。 – 2012-04-19 21:57:24

+0

我不明白你最后的评论是什么意思,你能解释一下吗?顺便说一句..我把你的代码添加到第一个if,它会给出一个错误:Undefined variable:b:colors_name – Reman 2012-04-20 05:43:01