使用 Vim 的 ctermbg 着色错误; Vim离开的解决方法?

Coloring bug with Vim's ctermbg; workaround with VimLeave?

我最近发现了 Vim colorschemes,并且在这个过程中发现了一个相当奇怪的错误:当我在 运行 hi Normal ctermbg 中 Vim 时,颜色变化会继续到我 运行ning Vim 所在的 shell,像这样:

我正在使用启用了 256 种颜色的 PuTTYtray(但也可以查看 PuTTY 中的行为)、字体更改指示的粗体文本以及 $TERM 设置为 "putty-256color";我的 .vimrc 如下:

set t_Co=256
colors zenburn

和zenburn.vim可以找到here。我已经将问题专门隔离到第 298 行,它首先配置 ctermbg 以进行正常突出显示。

(顺便说一句:似乎在使用具有特定颜色设置的 PuTTY 托盘时,在正常突出显示中,ctermbg 必须首先与 guifgguibg 同时设置,例如 hi Normal guifg=#dcdccc ctermbg=237,只有在那之后 hi Normal ctermbg=some_val 才能工作。)

有没有人碰巧知道为什么会这样?


我还尝试通过 运行ning hi Normal ctermbg=NoneVimLeave 上进行解决(尽管我认识到如果我 运行 多个 Vim 实例,所以如果有人可以提出替代方案,那也将受到欢迎),但没有成功。将以下内容添加到我的 .vimrc 不起作用:

function! RESET_ctermbg()
    "reset $ctermbg to None"
    exec "hi Normal ctermbg=None"
endfunction
au VimLeave * call RESET_ctermbg()

我已通过将 $TERM 更改为 xterm-256color 来解决问题;我最好的选择是 putty-256color 没有得到足够的支持作为 shell 来处理像我正在做的 vim colorscheme 这样的行为,所以我什至不需要尝试制作解决方法不再有效。