Colori errati con vim in iTerm2 utilizzando Solarized


84

Sto riscontrando uno strano problema con iTerm2, in terminal vim (non gui) e lo schema di colori solarizzato. Innanzitutto, ho impostato iTerm2 per utilizzare lo schema di colori scuri solarizzati.

Sto anche usando solarized per vim. Ho le seguenti righe nel mio .vimrc

set background=dark
colorscheme solarized

Nel terminale lo schema dei colori sembra errato: console vim

Per riferimento questo è come appare sotto MacVim (gui vim) gui vim

Cosa devo cambiare in iTerm o nel mio .vimrc per far sì che i colori appaiano correttamente nella mia console vim?

Risposte:


118

Un paio di cose da controllare:

  1. In iTerm2, in Preferenze -> Profili -> Terminale, sotto "Emulazione terminale" hai "Report Terminal Type:" impostato su xterm-256color.

  2. Nel tuo .vimrc, ci sono alcune opzioni che puoi anche impostare per assicurarti che utilizzi 256 colori:

    set background=dark
    " solarized options 
    let g:solarized_visibility = "high"
    let g:solarized_contrast = "high"
    colorscheme solarized
    
    E uno di questi dovrebbe funzionare, ma prima il numero 1.

MA, se stai usando il valore predefinito, integrato in vim su Snow Leopard, non funzionerà, poiché non è costruito con il supporto per 256 colori. Credo che la versione incorporata in Lion lo faccia.

Modifica: in base a diversi commenti su questa risposta, ho rimosso la let g:solarized_termcolors = 256riga .vimrcdall'esempio sopra. Sembra che potrebbe essere un problema per alcuni. Un altro dice che l'aggiunta della linea ha let g:solarized_termcolors = 16risolto un problema di visualizzazione a colori. Il tuo chilometraggio può variare.

Seconda modifica: se hai caricato la tavolozza dei colori solarizzata in iTerm2, devi farlo let g:solarized_termcolors=16. Solo let g:solarized_termcolors=256se non si utilizza la tavolozza solarizzata come preimpostazione del colore iTerm2.


13
In realtà, "let g: solarized_termcolors = 256" è stata la causa della visualizzazione non corretta di solarized per me. Secondo il repository git ( github.com/vim-scripts/Solarized ), "NOTA IMPORTANTE PER GLI UTENTI DEL TERMINALE:", dovresti "lasciare g: solarized_termcolors = 16".
Sai Perchard

3
Se stai usando lo schema di colori solarizzato con il tuo terminale, i 16 colori ANSI saranno impostati sui colori solarizzati, nel qual caso vuoi impostare let g:solarized_termcolors=16. Se usi 256 sarà vicino, ma lo sfondo sarà grigio invece del blu del mare profondo.
Parker Selbert

2
Sembra che 256mi dia lo sfondo grigio invece del blu scuro su Lion, ma 16sembra esattamente lo stesso che omettere quella variabile dal mio vimrc. Vabbè, il grigio scuro è meglio di un grigio molto chiaro che stavo ottenendo prima.
stile

1
Il commento di @SaiPerchard dovrebbe essere aggiunto alla risposta. Per me questo era ciò che ha risolto il colore di sfondo sbagliato.
Marten Sytema

1
Non ha funzionato per me: stackoverflow.com/a/12969298/1945990 ha funzionato. ITerm, tema solarizzato più tema solarizzato di vim.
Mike W

91

Le risposte di cui sopra non hanno funzionato per me.

Sto usando iTerm2 con vim 7.3 su OS X 10.7.4.

Se le soluzioni di cui sopra non hanno funzionato anche per te, prova questo

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

Aggiornamento: secondo Jim Stewart, funziona anche su Kitty .


Lo stesso per me qui ... Grazie per quella soluzione!
freitass

2
Sto usando KiTTY (derivato PuTTY) su Windows 7 e let g:solarized_termtrans = 1ho risolto un problema per me in cui il colore di sfondo sulle righe vuote era grigio, ma il colore di sfondo sulle righe con testo era nero dopo il contenuto.
Jim Stewart

non sono thuogh nero :(
Setheron

Se stai usando qualsiasi altra combinazione di colori, puoi hi Normal ctermbg=NONE, dal momento che è essenzialmente ciò che termtransfa in solarizzato (per quanto posso dire dalla loro fonte)
Achal Dave

1
Questo è il più vicino al lavoro, imposta correttamente il colore di sfondo, ma la mia linea del cursore, la colonna del colore e la colonna del numero di riga hanno tutti lo sfondo nero. Perché niente è mai facile!
Ian Vaughan

13

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

Scarica il pacchetto Solarized ( https://github.com/altercation/solarized ) e segui le istruzioni:

Apri iTerm 2, apri Preferenze, fai clic sull'icona "Profili" (precedentemente Indirizzi, precedentemente Segnalibri) nella barra degli strumenti delle preferenze, quindi seleziona la scheda "Colori". Fare clic su "carica preset" e selezionare "importa ...". Seleziona il file del tema Solarized Light o Dark.

Ora hai caricato i preset di colore Solarized in iTerm 2, ma non li hai ancora applicati. Per applicarli, è sufficiente selezionare un profilo esistente dalla finestra dell'elenco dei profili a sinistra o creare un nuovo profilo. Quindi seleziona il preset Solarized Dark o Solarized Light dal menu a discesa "Load Presets".

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

O:

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

Modifica .vimrc

Tema scuro:

syntax enable
set background=dark
colorscheme solarized

Luce

syntax enable
set background=light
colorscheme solarized

2
Nessuna delle risposte precedenti risolve il mio problema, ma questa sì. Si scopre che quello che mi mancava erano i preset di colore.
Sophia Feng

10

Questo ha funzionato per me in OS X 10.9.1 in iTerm 2 e Terminal. Un errore che stavo facendo è stato quello di mettere la dichiarazione dello schema dei colori prima delle impostazioni di termtrans e termcolors (e avevo bisogno di entrambi per farlo funzionare). Come altri hanno già detto, ho impostato il tipo di terminale su xterm-256color

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

colorscheme solarized
set background=dark

7

Ho lottato con lo stesso problema su OSX 10.11.6, iTerm2 Build 3.0.12.

Ecco la mia soluzione per questo.

  1. .vimrc

    sintassi abilita set background = dark colorscheme solarized

  2. Impostare Report Terminal Type su xterm-256color.

inserisci qui la descrizione dell'immagine

  1. Imposta il colore preimpostato nel profilo su Solarized Dark

inserisci qui la descrizione dell'immagine


Voto positivo perché questo era l'indizio di cui avevo bisogno per provare diversi preset di colore che mi hanno portato alla scoperta che i codici di fuga del colore oltre 256 sono trattati in modo diverso su Mac rispetto a Linux. Su Mac, i colori oltre i 256 sembravano essere modificati che appiattiti su uno degli 8 colori ANSI selezionati, mentre in Linux sembra che stia facendo un modulo che avvolge e seleziona un colore.
Eric Leschinski

6

Dal creatore: http://ethanschoonover.com/solarized/vim-colors-solarized

NOTA IMPORTANTE PER GLI UTENTI DEL TERMINALE:

Se si intende utilizzare Solarized in modalità Terminal (cioè non in una versione GUI come gvim o macvim), si prega di considerare l'impostazione dello schema colori dell'emulatore di terminale per utilizzare la tavolozza Solarized. Ho incluso tavolozze per alcuni emulatori di terminale popolari e Xdefaults nel download ufficiale di Solarized disponibile dalla homepage di Solarized. Se usi Solarized senza questi colori, sarà necessario dire a Solarized di degradare il suo schema di colori a un set compatibile con la tavolozza dei 256 terminali limitata (mentre usando i valori di colore 16 ansi del terminale, puoi impostare i valori corretti e specifici per tavolozza).

Se utilizzi i colori dei terminali personalizzati, solarized.vim dovrebbe funzionare immediatamente per te. Se stai usando un emulatore di terminale che supporta 256 colori e non vuoi usare i colori del terminale Solarized personalizzati, dovrai usare lo schema a 256 colori degradato. Per fare ciò, aggiungi semplicemente la seguente riga prima della riga solarizzata di colorschem:

let g:solarized_termcolors=256

Di nuovo, ti consiglio di cambiare i colori del terminale in valori Solarizzati manualmente o tramite uno dei tanti schemi di terminale disponibili per l'importazione.


Questo era l'unico modo per far sì che iTerm2 usasse i colori solarizzati in MacVim non GUI.
Aaron Tribou

4

La risposta di Bill Turner funziona, ma c'è un modo per far sì che i colori corrispondano esattamente a MacVim. Solarized ha il supporto specifico per iTerm2, tra gli altri emulatori di terminale.

  1. Vai alla pagina github iterm2-colors-solarized
  2. Segui le istruzioni in "Installazione"
  3. Assicurati che il tuo .vimrc abbia la linea colorscheme solarized

Questo dovrebbe impostare i colori di vim in iTerm2 in modo che siano esattamente come sono negli editor della GUI.


Come suggerisce anche la risposta, anche la risposta di Bill Turner è corretta ma QUESTO è il modo ufficiale (quindi corretto) di impostare il solarizedtema.
Can

1

Un modo semplice per risolvere questo problema è:

In colors dir on vim-color-solarized esiste un archivio chiamato 'solarozed.vim'

Apri questo file e cerca:
exe "let s: bg_back = '" .s: vmode. "Bg =". S: back. "'"

sostituire con:
exe "let s: bg_back = '" .s: vmode. "bg =". s: none. "'"


1

Per qualsiasi problema ancora come me, avevo installato il profilo colore solarizzato iterm2 . Installare vim-color-solarized su vim bundle e seguire le istruzioni non era necessario ed era incompatibile. C'erano problemi di evidenziazione divertenti come nell'acquisizione della schermata sopra.

Lezione appresa: non fare entrambe le cose.


0

Ho provato tutti i suggerimenti precedenti. Ho appena aggiunto set t_Co=256a .vimrc ed è stato risolto. Non avevo bisogno di creare un tmuxalias o modificare il mio file di configurazione.


0

Nessuna delle risposte precedenti ha funzionato per me. A quanto pare mi mancava:

set termguicolors
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.