Dziwne zachowanie koloru Vima wewnątrz ekranu z 256 kolorami
Próbowałem sprawić, aby podświetlenie składni (z 256 kolorami) vim
działało wewnątrz screen
, które działa wewnątrz gterm
.
screen
i wprowadzeniu vim
, kolory wyglądają dobrze, a naprawdę jest ich 256.
Ale po jakimś czasie (Nie wiem dokładnie jak długo) Kolory automatycznie zmieniają się z powrotem do wyglądu, jakby było ich tylko 8 (lub 16?) colors=
Na przykład, po tym jak już to nastąpi, jeśli wpiszę komendę
hi Comment ctermfg=68
Wewnątrz vim
komentarze wydają się być" czyste " zielone; jednak jeśli otworzę Inny vim
na zewnątrz ekranu( w tym samym terminalu), to tym samym poleceniem komentarze wydają się być "żółtawe" zielone.
Oto mój .ustawienia ekranu związane z kolorem:
attrcolor b ".I"
defbce "on"
termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'
term xterm-256color
Po uruchomieniu skryptu Pythona, aby wyświetlić wszystkie kolory, dowiaduję się, że może to być problem samego ekranu i nie ma nic wspólnego z Vimem.
Zrobiłem to, że wewnątrz sesji screen
z problemami, ten skrypt daje 256 kolorów, ale wiele z nich jest w rzeczywistości takich samych; jednak, gdy zaczynam nową sesję ekranową z tą samą konfiguracją, ten skrypt daje 256 kolorów, które są różne od siebie.
Edit:
Ostatniej nocy podłączyłem się do mojego komputera z Linuksem (który jest w moim biurze i jest zawsze włączony) z putty
, a następnie otworzyłem sesję screen
z wiele okien w nim. Kolory są poprawne zeszłej nocy. Zanim poszedłem spać odsunąłem sesję screen
i zamknąłem putty
.
Teraz rano, kiedy dołączam tę sesję screen
W putty
ponownie, Kolory się psują: wyglądają tak, jakby było tylko 8 kolorów.
Kolory są w porządku na zewnątrz screen
(ale nadal w putty
).
Edit:
Trzy lata później po tym, jak zadałem to pytanie, dzisiaj zobaczyłem podobny problem. Problem polega na tym, że vim
może wyświetlać 256 kolorów na zewnątrz screen
i screen
może wyświetlać 256 kolorów za pomocą skryptu testowego, ale vim
nie może wyświetlać żadnego koloru (może wyświetlać tylko czarno-biały) wewnątrz screen
. Jako notatkę dla siebie, oto plik .screenrc
, którego używam
hardstatus alwayslastline "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %Y-%m-%d %c"
shell "bash"
startup_message off
vbell off
altscreen on
attrcolor b ".I"
defbce "on"
termcapinfo xterm* 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'
term screen-256color
Rozwiązanie problemu jest już wymienione w zaakceptowanej odpowiedzi, a mianowicie muszę uwzględnić
export TERM=xterm-256color
W .bashrc
.
3 answers
Krótka Odpowiedź
Ustaw TERM
na xterm-256color
w swoim .bashrc
i umieść term screen-256color
w swoim .screenrc
.
Długa Odpowiedź
Oto dlaczego to się łamie: gnome-terminal, screen, tmux, bash, putty i vim mają Wszystkie zostały napisane tak, aby inteligentnie obsługiwać 256 kolorów, ale musisz ustawić wszystko poprawnie w najwcześniejszym możliwym momencie. Użycie termcapinfo
w twoim .screenrc
jest w rzeczywistości rozwiązaniem z taśmy klejącej!
Jeśli twój TERM
jest ustawiony poprawnie, będzie sygnałem do Basha, że jesteś w 256-kolorowy tryb, co oznacza, że będzie dobrze grać z ekranu jest w trybie 256-kolor, jak również.
Więc, w Twoim .bashrc
, export TERM=xterm-256color
. [1]
W twoim .screenrc
użyj screen-256color
dla TERM
zamiast xterm-256color
, a resztę wykasuj!
W konfiguracji PuTTy użyj putty-256color
.
Możesz pobrać pliki wejściowe termcap i umieścić je w ~/.terminfo/s
i ~/.terminfo/p
, jeśli twoje pudełko nie ma ich domyślnie.
Przypisy
[1] Ustawienie TERM
na xterm-256color
w twoim .bashrc
może być trochę zarozumiały, zwłaszcza jeśli używasz tego samego .bashrc
na wielu maszynach. Okazało się, że poniższy fragment jest dość skuteczny: {]}
case "$TERM" in
*-256color)
alias ssh='TERM=${TERM%-256color} ssh'
;;
*)
POTENTIAL_TERM=${TERM}-256color
POTENTIAL_TERMINFO=${TERM:0:1}/$POTENTIAL_TERM
# better to check $(toe -a | awk '{print $1}') maybe?
BOX_TERMINFO_DIR=/usr/share/terminfo
[[ -f $BOX_TERMINFO_DIR/$POTENTIAL_TERMINFO ]] && \
export TERM=$POTENTIAL_TERM
HOME_TERMINFO_DIR=$HOME/.terminfo
[[ -f $HOME_TERMINFO_DIR/$POTENTIAL_TERMINFO ]] && \
export TERM=$POTENTIAL_TERM
;;
esac
alias
ssh jest środkiem obronnym zapobiegającym próbie otwarcia terminala 256-kolorowego na zdalnej maszynie, która niekoniecznie GO obsługuje. Blok główny jest drugą połową równania; sprawdza, czy odpowiedni wpis terminfo istnieje, i ustawia go, jeśli tak.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-02 21:31:07
Max ma doskonałą odpowiedź, ale faktycznie musiałem Ponownie zainstalować ekran z ./configure --enable-colors256
aby upewnić się, że plik config.h
ma ustawione #define COLORS256 1
, co nie było domyślnie ustawione na moim komputerze. Następnie okazało się, że inne ustawienia nie były konieczne, dopóki upewniłem się, że mój TERM
został ustawiony na xterm-256color
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-08 23:18:06
W najnowszej wersji screena (v4.99. 0) nie ma potrzeby używania term screen-256color
w swoim .screenrc
. Nawet bez tego ustawienia Kolor Vima wewnątrz i na zewnątrz ekranu jest dokładnie taki sam.
Uwaga 1: przetestowałem tę funkcję na Mac OS High Sierra 10.13.4 i Ubuntu 16.04.
Można uzyskać najnowszą wersję ekranu za pomocą
git clone https://git.savannah.gnu.org/git/screen.git
.
Uwaga 2: W przeciwieństwie do niektórych poprzednich wersji, podczas gdy konfigurowanie tej wersji ekranu nie ma potrzeby używania --enable-colors256
opcja
Uwaga 3: aby konfiguracja powiodła się, musisz mieć obsługę PAM. W ubuntu możesz użyć sudo apt-get install libpam0g-dev
Uwaga 4: będziesz potrzebował sudo
dostępu na Ubuntu podczas wykonywania make install
, ponieważ ten krok używa chown
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-25 11:24:50