进入缓冲区时的配色方案

标签 colors buffer vim

我的 .vimrc 中有这个:

augroup filetype_colorscheme
        au BufEnter *
        \ if !exists('b:colors_name')
            \ | if &ft == "vim"
                \ | let b:colors_name = 'color_dark'
            \ | else
                \ | let b:colors_name = 'color_light'
            \ | endif
        \ | endif
        \ | exe 'colorscheme' b:colors_name
augroup END 

它的作用:
当我打开 .vim 页面时,它会打开我的深色方案“color_dark.vim”
当我打开任何其他页面时,它会打开我的浅色方案“color_light.vim”

这非常好,但在拆分窗口中就不太好了。
每次当我用 p.e. 单击拆分窗口时。一个文本文件,所有分割窗口都会通过浅色方案变成浅色(甚至 .vim 文件)。
当我切换到分割窗口中的 vim 文件时,其他分割窗口中的所有其他文件也会变黑。

是否可以在拆分窗口中保留每个文件类型自己的颜色方案?
上面的代码我需要改变什么?

编辑
如果这是不可能的,当我进入分割窗口时是否可以禁用上面的代码? (为了让我自己选择配色方案,所有分割窗口都一样)

最佳答案

颜色方案将始终影响整个 vim 实例。每个分割窗口不可能有不同的配色方案。

编辑 1:要回答编辑中的第二个问题,您可以将 && winnr('$') == 1 添加到第一个 if 来停止此操作当您打开多个拆分窗口时不会发生这种情况。

编辑 2:哎呀,上面的编辑不起作用,但我认为应该将所有内容包装在另一个 if 中。

编辑 3:遗漏了几个管道。

augroup filetype_colorscheme
        au BufEnter *
        \ | if winnr('$') == 1
                \ if !exists('b:colors_name')
                    \ | if &ft == "vim"
                        \ | let b:colors_name = 'color_dark'
                    \ | else
                        \ | let b:colors_name = 'color_light'
                    \ | endif
                \ | endif
                \ | exe 'colorscheme' b:colors_name
        \ | endif
augroup END 

关于进入缓冲区时的配色方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10224953/

相关文章:

C# aforge 颜色检测

html - 颜色在 Safari 中不显示,但在 MSIE、FF 和 Chrome 浏览器中一切正常

Python从Buffer中读取数据

vim - 仅在终端中的 Vim 中使用当前缓冲区中的相对行号

vim - VIM:可映射(未使用)的快捷方式字母?

Android - 通过引用其他定义的颜色来定义颜色

swift - 将 UIColor(扩展范围 sRGB)转换为 CIColor

node.js - 如何追加到nodejs中的excel文件

c++ - 使用 C++-AMP 访问缓冲区

string - 关于连接变量和常量字符串的 vim 脚本