2012-04-19 170 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