2011-06-28 55 views
3

當我打開.vim,.htm,.html,.xml或_vimrc文件時,是否可以更改Vim中的colorscheme? (也改變色彩方案,當我切換到上面擴展一個已經打開的文件)當文件類型改變時Colorscheme改變

這就是我希望我的vim的事:

文件= TXT或新的(未保存)緩衝區:colorscheme1(默認colorcheme)
file = vimrc,vim,html,htm:colorscheme2

我注意到我的vim沒有檢測到所有的文件類型。
文本文件不被識別爲文本文件。

ps:
如果這是不可能的,當我重新啓動VIM(不用更改vimrc中的某些內容)時,是否可以切換到其他顏色並保留它?


編輯

實測值與自動命令的溶液:

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

仍然有一個問題
上面的代碼改變的所有文件的色彩方案中的分割窗口當我點擊一個緩衝區

有沒有一種使用快捷鍵取消激活(並重新激活)autocmd的方法?

+0

vim如何識別文本文件? – dave

+0

@black,它不在我的情況下 – Reman

+0

是的,知道了......我想問一下vim使用什麼類型而不是文本。 – dave

回答

9

你應該能夠實現的東西接近你想要用下面的自動命令是什麼:

colo <colourscheme1> "default 
autocmd! BufEnter,BufNewFile *.html,*.vim,*xml colo <colourscheme2> 
autocmd! BufLeave *.html,*.vim,*xml colo <colourscheme1> 

當然,如你願意,你可以修改文件擴展名列表。如果您打開(或切換到)任何指定類型,則默認爲<colourscheme1>,如果打開(或切換到)Vim會話中的任何其他類型,則將默認爲<colourscheme1><colourscheme2>

希望這會有所幫助。