文件类型更改时颜色方案更改

时间:2011-06-28 17:16:14

标签: vim detection file-type

当我打开.vim,.htm,.html,.xml或_vimrc文件时,是否可以更改Vim中的colorscheme? (当我切换到具有上述扩展名的已经打开的文件时,也会更改colorscheme)

这就是我想让我的vim做的事情:

file = txt或新的(未保存的)缓冲区:colorscheme1(默认colorscheme)
file = vimrc,vim,html,htm:colorscheme2

我还注意到我的vim没有检测到所有的文件类型 文本文件无法识别为文本文件。

PS:
如果这不可能,我可以切换到另一个colorscheme并在重新启动VIM时保留它(不更改vimrc中的内容)?


修改

使用autocmd找到解决方案:

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 

还有一个问题
  当我点击缓冲区时,上面的代码会更改分割窗口中所有文件的colorscheme

  有没有办法使用快捷键停用(并重新激活)autocmd?

1 个答案:

答案 0 :(得分:9)

您应该能够通过以下自动命令实现与您想要的一致:

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

当然,您可以根据需要修改文件扩展名列表。 colourscheme默认为<colourscheme1>,如果您打开(或切换到)任何指定的类型,则为<colourscheme2>,当您打开(或切换到)任何类型时,它将恢复为<colourscheme1> Vim会话中的其他类型。

希望这有帮助。