【问题标题】:Why is my vim colorscheme changing when I change buffers为什么当我更改缓冲区时我的 vim 颜色方案会发生变化
【发布时间】:2013-03-01 08:21:01
【问题描述】:

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

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

autocmd WinEnter,FileType * colorscheme default
autocmd WinEnter,FileType c,cpp colorscheme darkblue
autocmd WinEnter,FileType R,r colorscheme desert

当我在缓冲区中导航时,如何修改以确保颜色方案根据文件类型持续存在?

编辑:添加以下内容没有修复

autocmd BufEnter,BufNew,FileType c,cpp colorscheme darkblue
autocmd BufEnter,BufNew,FileType R,r colorscheme desert

【问题讨论】:

  • 看来你应该添加 BufNew,BufEnter autocmds :>

标签: vim color-scheme


【解决方案1】:

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

相反,只要在窗口中输入/显示缓冲区,就使用一个触发的自动命令,并选择带有&filetype 条件的颜色模式。

:autocmd BufEnter,FileType *
\   if &ft ==# 'c' || &ft ==# 'cpp' | colorscheme darkblue |
\   elseif &ft ==? 'r' | colorscheme desert |
\   else | colorscheme default |
\   endif

【讨论】:

  • 像魅力一样工作!!!谢谢。只是为了理解,为什么 #? 用于文件类型?
  • 这是区分大小写/不区分大小写的比较,以节省一些输入。您还可以使用=~ 进行正则表达式匹配。
  • 如何修改此代码以将darkblue 用于.sql 文件,将desert 用于.py 文件,然后将pyte 用于其他所有内容? ...只需将 'c' 切换为 'sql' 吗? (或者这个答案中的 c/cpp/r 是实际的文件扩展名吗?)
  • @whytheq 它们是文件类型,而不是扩展名。通过:setl ft?检查您的缓冲区是哪一个。
  • 嗯 - 谢谢 - 最初认为 romainl 是无所不在的 vim 海报,但也许你正在接管 Ingo! p.s.不确定您是否对通过 vim 的数据库配置了解很多,但我刚刚添加了这个问题:SO QUESTION
【解决方案2】:

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

autocmd BufEnter *     colorscheme default
autocmd BufEnter *.php colorscheme desert
autocmd BufEnter *.py  colorscheme darkblue

应该可以。好吧,他们在这里工作。

【讨论】:

    猜你喜欢
    • 2012-06-13
    • 1970-01-01
    • 2016-05-02
    • 2016-11-30
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多