当我打开.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?
答案 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会话中的其他类型。
希望这有帮助。