当我更改缓冲区时,为什么我的vim colorscheme会改变

sta*_*ant 2 vim color-scheme

我在某些文件类型上有一些首选的colorscheme,但是当我打开另一个文件(具有不同colorscheme的不同文件类型)并返回到前一个文件时,新的colorscheme仍然存在.

我在我的Gvimrc中有这个(使用gvim)

autocmd WinEnter,FileType * colorscheme default
autocmd WinEnter,FileType c,cpp colorscheme darkblue
autocmd WinEnter,FileType R,r colorscheme desert
Run Code Online (Sandbox Code Playgroud)

当我浏览缓冲区时,如何修改以确保colorscheme根据文件类型保留?

编辑:添加以下没有修复

autocmd BufEnter,BufNew,FileType c,cpp colorscheme darkblue
autocmd BufEnter,BufNew,FileType R,r colorscheme desert
Run Code Online (Sandbox Code Playgroud)

Ing*_*kat 7

在同一个autocmd规则中组合WinEnterFileType事件是没有意义的; 第一个匹配缓冲区的文件名,而后者匹配缓冲区的文件类型.

相反,只要在窗口中输入/显示缓冲区,就会使用单个autocmd,并选择带有条件的colorschmeme &filetype.

:autocmd BufEnter,FileType *
\   if &ft ==# 'c' || &ft ==# 'cpp' | colorscheme darkblue |
\   elseif &ft ==? 'r' | colorscheme desert |
\   else | colorscheme default |
\   endif
Run Code Online (Sandbox Code Playgroud)


rom*_*inl 7

Ingo的答案更聪明,但这些自动命令

autocmd BufEnter *     colorscheme default
autocmd BufEnter *.php colorscheme desert
autocmd BufEnter *.py  colorscheme darkblue
Run Code Online (Sandbox Code Playgroud)

应该管用.嗯,他们在这里工作.