2015-10-14 2 views
0

Недавно я обнаружил Vim colorschemes, и в процессе обнаружил довольно любопытный баг: когда я бег hi Normal ctermbg в Vim, изменение цвета переносится на оболочку, что я бег Vim в, например, так:Окраска ошибка с vter's ctermbg; обходной путь с VimLeave?

vim-ctermbg-bug

Я использую PuTTYtray (но также вижу поведение в PuTTY) с включенным 256 цветами, полужирным шрифтом, обозначенным изменением шрифта, и $ TERM, установленным на «putty-256color»; мой .vimrc следующим образом:

set t_Co=256 
colors zenburn 

и zenburn.vim можно найти here. Я специально выделил проблему специально для строки 298, где она сначала настраивает ctermbg для обычной подсветки.

(Кстати: кажется, что при использовании PuTTY лотка с определенными параметрами цвета, в нормальном подсветке, ctermbg должен быть первым установлен одновременно с guifg или guibg, например hi Normal guifg=#dcdccc ctermbg=237, и только после этого будет hi Normal ctermbg=some_val работы.)

Кто-нибудь случайно не знает, почему это происходит?


Я также пытался сделать обходной путь, запустив hi Normal ctermbg=None на VimLeave (хотя я признаю, что это проблематично, если я запускать несколько экземпляров Vim, так что если кто может предложить альтернативу, которая также будет приветствоваться), но без успеха. Добавление следующих к моему .vimrc не работает:

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

ответ

0

Я исправил эту проблему путем изменения $TERM к xterm-256color; мой лучший выбор в том, что putty-256color недостаточно хорошо поддерживается как оболочка для обработки поведения, такого как vim colorscheme, который я делал, поэтому мне даже не нужно пытаться сделать обходную работу больше.

+0

Устанавливается '' TERM'' для 'termty-256color' termcap информация установлена ​​в системе Linux, в которой вы используете vim, и что эта информация соответствует используемой вами версии шпионки и флагов конфигурации. – Vitor