当文件类型更改时,Colorscheme会更改

Rem*_*man 3 vim file-type detection

当我打开.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 
Run Code Online (Sandbox Code Playgroud)

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

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

Pri*_*ash 9

您应该能够使用以下自动命令实现接近您想要的功能:

colo <colourscheme1>  "default
autocmd! BufEnter,BufNewFile *.html,*.vim,*xml colo <colourscheme2>
autocmd! BufLeave *.html,*.vim,*xml colo <colourscheme1>
Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助.