2011-06-21 11 views
36

Używam vim w trybie 256 kolorów w systemie Solaris (połączenie za pomocą Putty w systemie Windows). Wszystko wygląda świetnie i działa dobrze poza tmux, ale w tmux kolor tła zmienia się okresowo podczas stronicowania/przewijania pliku.vim w tmux zmiany koloru tła podczas stronicowania

Oto jak to ma wyglądać:

Oto jak wydaje się po stronicowania się trochę:

Dzięki!

Odpowiedz

47

As explained here wyłączyć Kolor tła Erase (BCE), usuwając opcję t_ut terminala (uruchomić :set t_ut= w vim, a następnie naciśnij Kontrola + L aby odświeżyć ekran terminala), dzięki czemu prace schematy kolorów prawidłowo, gdy Vim jest używany wewnątrz ekranu tmux i GNU.

Per powyższy link, BCE można ustawić w .vimrc dodając następujący

if &term =~ '256color' 
    " disable Background Color Erase (BCE) so that color schemes 
    " render properly when inside 256-color tmux and GNU screen. 
    " see also http://snk.tuxfamily.org/log/vim-256color-bce.html 
    set t_ut= 
endif 
8

To wygląda na problem z ustawieniem terminu lub terminfo.

Upewnij się, że twoje hasło w tmux to TERM=screen-256color, a twoje pole solaris ma poprawne terminfo.

+0

To wydaje się zrobić to, ale kiedy przełączam się na ekran 256 kolorów, moje klawisze F przestają działać. – moshen

+0

F-klucze jak w standardowym {F, f} lub jak w klawiszach funkcyjnych? – jasonwryan

+1

Klawisze funkcyjne ... Zrozumiałem, że to była sprawa PuTTy (http://www.howtogeek.com/58487/how-to-easily-multitask-in-a-linux-terminal-with-byobu/ ? amp), Dzięki! – moshen

17

Dodanie alternatywnego rozwiązania, ponieważ sam wpadłem na ten problem i dopiero co go rozwiązałem. Miałem prawidłową wartość TERM, plik terminfo itp., Ale tło będzie rysowane tylko za komórkami zawierającymi znaki do druku lub komórki po lewej stronie.

Jeśli przełączanie między GUI vim i CLI vim często, można wyprowadzić coś takiego w pliku .vimrc w pewnym momencie:

if !has("gui_running") 
    set term=xterm 
endif 

(czy naprawdę każdy nadrzędnym w ogóle zmiennej TERM ciągu .vimrc)

Zmień przesłonięcie terminala na screen-256color.

... 
set term=screen-256color 
... 
+1

To zadziałało również dla mnie. Poza tym, że wydaje się łamać wiele mapowań klawiatury (np. Strzałki w CommandT, ctrl + mapowania strzałek):/ –

+2

'set term = screen-256color' w' .vimrc' pomógł mi. Dzięki! – Zelid