Nieprawidłowe kolory z vimem w iTerm2 przy użyciu Solarized


84

Mam dziwny problem z iTerm2, w terminalowym vimie (non-gui) i solaryzowanym schemacie kolorów. Najpierw ustawiłem iTerm2 tak, aby używał ciemnego schematu kolorów solaryzowanych.

Używam też solaryzacji dla vima. Mam następujące wiersze w moim .vimrc

set background=dark
colorscheme solarized

W terminalu schemat kolorów wygląda nieprawidłowo: console vim

Dla odniesienia tak to wygląda pod MacVim (gui vim) gui vim

Co muszę zmienić w iTerm lub moim .vimrc, aby kolory wyglądały poprawnie w moim vimie na konsoli?

Odpowiedzi:


118

Kilka rzeczy do sprawdzenia:

  1. W iTerm2, w Preferencjach -> Profile -> Terminal, pod "Emulacja terminala" masz "Raport typu terminala:" ustawione na xterm-256color.

  2. W twoim .vimrc jest kilka opcji, które możesz ustawić, aby upewnić się, że używa 256 kolorów:

    set background=dark
    " solarized options 
    let g:solarized_visibility = "high"
    let g:solarized_contrast = "high"
    colorscheme solarized
    
    I jeden z nich powinien działać, ale pierwszy.

ALE, jeśli używasz domyślnego, wbudowanego vim w Snow Leopard, to nie zadziała, ponieważ nie jest zbudowany z obsługą 256 kolorów. Wierzę, że wbudowana wersja w Lion tak.

Edycja: na podstawie kilku komentarzy dotyczących tej odpowiedzi usunąłem let g:solarized_termcolors = 256wiersz z .vimrcpowyższego przykładu. Wydaje się, że dla niektórych może to stanowić problem. Inny mówi, że dodanie linii let g:solarized_termcolors = 16rozwiązało problem z wyświetlaniem kolorów. Twój własny przebieg może się różnić.

Druga edycja : jeśli załadowałeś solaryzowaną paletę kolorów do iTerm2, musisz let g:solarized_termcolors=16. Tylko let g:solarized_termcolors=256jeśli nie używasz solaryzowanej palety jako ustawienia wstępnego kolorów iTerm2.


13
Właściwie to „niech g: solarized_termcolors = 256” było przyczyną niepoprawnego wyświetlania solaryzacji. Zgodnie z repozytorium git ( github.com/vim-scripts/Solarized ), „WAŻNA UWAGA DLA UŻYTKOWNIKÓW TERMINALÓW:”, należy „pozwolić g: solarized_termcolors = 16”.
Sai Perchard

3
Jeśli korzystasz ze schematu kolorów solaryzowanych z terminalem, 16 kolorów ANSI zostanie ustawionych na kolory solaryzowane, w takim przypadku chcesz ustawić let g:solarized_termcolors=16. Jeśli użyjesz 256, będzie blisko, ale tło będzie szare zamiast ciemnoniebieskiego.
Parker Selbert

2
Wygląda na to, że 256daje mi szare tło zamiast ciemnoniebieskiego na Lion, ale 16wygląda dokładnie tak samo, jak pomijanie tej zmiennej w moim vimrc. No cóż, ciemnoszary jest lepszy niż naprawdę jasnoszary, który otrzymywałem wcześniej.
styfle

1
Do odpowiedzi należy dodać komentarz @SaiPerchard. Dla mnie to właśnie naprawiło zły kolor tła.
Marten Sytema

1
Dla mnie nie zadziałało: stackoverflow.com/a/12969298/1945990 jednak zadziałał . ITerm, motyw solaryzowany plus motyw solaryzowany vim.
Mike W

91

Powyższe odpowiedzi mi nie pomogły.

Używam iTerm2 z vimem 7.3 na OS X 10.7.4.

Jeśli powyższe rozwiązania również nie zadziałały, spróbuj tego

syntax on
set background=dark
let g:solarized_termtrans = 1
colorscheme solarized

Aktualizacja: Według Jima Stewarta działa to również na Kitty .


Dla mnie to samo ... Dzięki za to rozwiązanie!
freitass

2
Używam programu KiTTY (pochodna PuTTY) w systemie Windows 7 i let g:solarized_termtrans = 1naprawiłem problem polegający na tym, że kolor tła w pustych wierszach był szary, ale kolor tła w wierszach z tekstem był czarny po zawartości.
Jim Stewart

one nie są czarne thuogh :(
Setheron

Jeśli używasz innego schematu kolorów, możesz hi Normal ctermbg=NONE, ponieważ zasadniczo to termtransdziała w przypadku solaryzacji (o ile mogę stwierdzić z ich źródła)
Achal Dave,

1
Jest to najbardziej zbliżone do działania, ustawia poprawnie kolor tła, ale moja linia kursora, kolumna koloru i kolumna z numerem linii mają czarne tło. Dlaczego nic nie jest łatwe!
Ian Vaughan

13

https://github.com/altercation/solarized/tree/master/iterm2-colors-solarized

Pobierz pakiet Solarized ( https://github.com/altercation/solarized ) i postępuj zgodnie z instrukcjami:

Otwórz iTerm 2, otwórz Preferencje, kliknij ikonę "Profile" (dawniej Adresy, dawniej Zakładki) na pasku narzędzi preferencji, a następnie wybierz zakładkę "Kolory". Kliknij „wczytaj ustawienia wstępne” i wybierz „Importuj ...”. Wybierz plik motywu Solarized Light lub Dark.

Załadowałeś teraz ustawienia wstępne kolorów Solarized do iTerm 2, ale jeszcze ich nie zastosowałeś. Aby je zastosować, po prostu wybierz istniejący profil z okna listy profili po lewej stronie lub utwórz nowy profil. Następnie wybierz ustawienie wstępne Solarized Dark lub Solarized Light z listy rozwijanej „Load Presets”.

====================================

Lub:

cd ~/.vim/bundle
git clone git://github.com/altercation/vim-colors-solarized.git

Zmodyfikuj plik .vimrc

Ciemny schemat:

syntax enable
set background=dark
colorscheme solarized

Lekki

syntax enable
set background=light
colorscheme solarized

2
Żadna z poprzednich odpowiedzi nie rozwiązuje mojego problemu, ale ta tak. Okazuje się, że brakowało mi presetów kolorów.
Sophia Feng

10

To działało dla mnie w OS X 10.9.1 w iTerm 2, a także w Terminalu. Jednym błędem, który popełniłem, było umieszczenie deklaracji schematu kolorów przed ustawieniami trans i termcolors (i potrzebowałem obu, aby to działało). Jak powiedzieli inni, ustawiłem typ terminala na xterm-256color

if !has("gui_running")
    let g:solarized_termtrans=1
    let g:solarized_termcolors=256
endif

colorscheme solarized
set background=dark

7

Z tym samym problemem zmagałem się na OSX 10.11.6, iTerm2 Build 3.0.12.

Oto moja poprawka.

  1. .vimrc

    składnia włącz ustaw tło = ciemny schemat kolorów solaryzowany

  2. Ustaw Report Terminal Type na xterm-256color.

wprowadź opis obrazu tutaj

  1. Ustaw kolor w profilu na Solarized Dark

wprowadź opis obrazu tutaj


Głosuj za, ponieważ to była wskazówka, której potrzebowałem, aby wypróbować różne ustawienia kolorów, które doprowadziły mnie do odkrycia, że ​​kody ucieczki kolorów po 256 są traktowane inaczej na Macu i Linuksie. Na Macu kolory powyżej 256 zdawały się być zmodyfikowane, a nie spłaszczone do jednego z 8 wybranych kolorów ANSI, podczas gdy w Linuksie wydaje się, że wykonuje moduł, który zawija się i wybiera kolor.
Eric Leschinski

6

Od twórcy: http://ethanschoonover.com/solarized/vim-colors-solarized

WAŻNA UWAGA DLA UŻYTKOWNIKÓW TERMINALA:

Jeśli zamierzasz używać Solarized w trybie terminala (tj. Nie w wersji GUI, takiej jak gvim lub macvim), proszę rozważ ustawienie schematu kolorów emulatora terminala na paletę Solarized. Dodałem palety dla niektórych popularnych emulatorów terminali, a także Xdefaults w oficjalnym pliku do pobrania Solarized dostępnym na stronie głównej Solarized. Jeśli użyjesz Solarized bez tych kolorów, Solarized będzie musiał zdegradować swój schemat kolorów do zestawu zgodnego z ograniczoną paletą 256 terminali (podczas gdy używając 16 wartości kolorów ansi terminala, możesz ustawić prawidłowe, specyficzne wartości dla Solarized paleta).

Jeśli używasz niestandardowych kolorów terminali, plik solarized.vim powinien działać po wyjęciu z pudełka. Jeśli używasz emulatora terminala, który obsługuje 256 kolorów i nie chcesz używać niestandardowych kolorów terminala Solarized, będziesz musiał użyć zdegradowanego schematu 256 kolorów. Aby to zrobić, po prostu dodaj następującą linię przed linią kolorów schematu słonecznego:

let g:solarized_termcolors=256

Ponownie, zalecam po prostu zmianę kolorów terminali na wartości Solaryzowane ręcznie lub za pomocą jednego z wielu schematów terminali dostępnych do importu.


To był jedyny sposób, w jaki mogłem sprawić, by iTerm2 używał solaryzowanych kolorów w MacVimie innym niż GUI.
Aaron Tribou,

4

Odpowiedź Billa Turnera działa, ale istnieje sposób na dokładne dopasowanie kolorów do MacVima. Solarized ma wsparcie specjalnie dla iTerm2, wśród innych emulatorów terminali.

  1. Przejdź do strony github iterm2-colors-solarized
  2. Postępuj zgodnie z instrukcjami w sekcji „Instalacja”
  3. Upewnij się, że plik .vimrc ma linię colorscheme solarized

Powinno to ustawić kolory vima w iTerm2 tak, aby były dokładnie takie, jakie są w edytorach GUI.


Jak sugeruje odpowiedź, odpowiedź Billa Turnera również jest poprawna, ale jest to oficjalny (a więc poprawny) sposób ustawiania solarizedtematu.
Może

1

Prostym sposobem rozwiązania tego problemu jest:

W kolorach dir on vim-color-solarized istnieje arquive o nazwie `` solarozed.vim ''

Otwórz ten plik i wyszukaj:
exe "let s: bg_back = '" .s: vmode. "Bg =". S: back. "'"

zamień na:
exe "let s: bg_back = '" .s: vmode. "bg =". s: none. "'"


1

W przypadku jakichkolwiek problemów, takich jak ja, zainstalowałem solaryzowany profil kolorów iterm2 . Instalowanie vim-color-solarized w paczkach vima i postępowanie zgodnie z instrukcjami było niepotrzebne i niekompatybilne. Były zabawne problemy z podświetlaniem, jak na powyższym zrzucie ekranu.

Wyciągnięta lekcja: nie rób obu.


0

Wypróbowałem wszystkie poprzednie sugestie. Właśnie dodałem set t_Co=256do .vimrc i zostało to naprawione. Nie musiałem tworzyć tmuxaliasu ani zmieniać pliku konfiguracyjnego.


0

Żadna z poprzednich odpowiedzi nie działała dla mnie. Najwyraźniej brakowało:

set termguicolors
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.