Cores incorretas com vim em iTerm2 usando Solarized


84

Estou tendo um problema estranho com o iTerm2, no terminal vim (não-gui) e o esquema de cores solarizado. Primeiro, configurei o iTerm2 para usar o esquema de cores escuro solarizado.

Também estou usando solarizado para vim. Eu tenho as seguintes linhas no meu .vimrc

set background=dark
colorscheme solarized

No terminal, o esquema de cores parece incorreto: console vim

Para referência, é assim que parece em MacVim (gui vim) gui vim

O que preciso mudar no iTerm ou no meu .vimrc para que as cores pareçam corretas no meu console vim?

Respostas:


118

Algumas coisas para verificar:

  1. No iTerm2, em Preferências -> Perfis -> Terminal, em "Emulação de Terminal", você tem "Relatório Tipo de Terminal:" definido como xterm-256color.

  2. No seu .vimrc, existem algumas opções que você também pode definir para se certificar de que está usando 256 cores:

    set background=dark
    " solarized options 
    let g:solarized_visibility = "high"
    let g:solarized_contrast = "high"
    colorscheme solarized
    
    E um desses deve funcionar, mas o número 1 primeiro.

MAS, se você estiver usando o padrão, embutido no vim no Snow Leopard, ele não funcionará, pois não é construído com suporte para 256 cores. Acredito que a versão interna do Lion sim.

Edit: Com base em vários comentários sobre esta resposta, removi a let g:solarized_termcolors = 256linha do .vimrcexemplo acima. Parece que isso pode ser um problema para alguns. Outro diz que adicionar a linha let g:solarized_termcolors = 16corrigiu um problema de exibição em cores. Sua própria milhagem pode variar.

Segunda edição: Se você carregou a paleta de cores solarizada no iTerm2, então você deve let g:solarized_termcolors=16. Somente let g:solarized_termcolors=256se você não estiver usando a paleta solarizada como sua predefinição de cor do iTerm2.


13
Na verdade, "let g: solarized_termcolors = 256" foi a causa da exibição incorreta do solarized para mim. De acordo com o repo git ( github.com/vim-scripts/Solarized ), "NOTA IMPORTANTE PARA USUÁRIOS DO TERMINAL:", você deve "deixar g: solarized_termcolors = 16".
Sai Perchard

3
Se você estiver usando o esquema de cores solarizadas com seu terminal, as 16 cores ANSI serão definidas para as cores solarizadas, caso em que você deseja definir let g:solarized_termcolors=16. Se você usar 256, ele ficará próximo, mas o fundo será cinza em vez do azul marinho profundo.
Parker Selbert,

2
Parece que 256me dá o fundo cinza em vez de azul escuro no Lion, mas 16parece exatamente o mesmo que omitir essa variável do meu vimrc. Bem, cinza escuro é melhor do que um cinza claro que eu estava recebendo antes.
styfle

1
O comentário @SaiPerchard deve ser adicionado à resposta. Para mim, foi isso que consertou a cor de fundo errada.
Marten Sytema

1
Não funcionou para mim: stackoverflow.com/a/12969298/1945990 , porém. ITerm, tema solarizado mais tema solarizado vim.
Mike W

91

As respostas acima não funcionaram para mim.

Estou usando o iTerm2 com vim 7.3 no OS X 10.7.4.

Se as soluções acima não funcionaram para você também, tente este

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

Atualização: De acordo com Jim Stewart, isso funciona com Kitty também.


O mesmo para mim aqui ... Obrigado pela solução!
freitass

2
Estou usando o KiTTY (derivado do PuTTY) no Windows 7 e resolvi let g:solarized_termtrans = 1um problema em que a cor de fundo nas linhas em branco era cinza, mas a cor de fundo nas linhas com texto era preta depois do conteúdo.
Jim Stewart

eles não são black thuogh :(
Setheron

Se você estiver usando qualquer outro esquema de cores, você pode hi Normal ctermbg=NONE, já que é essencialmente o que termtransfaz em solarizado (pelo que eu posso dizer de sua fonte)
Achal Dave

1
Este é o mais próximo de funcionar, ele define a cor de fundo corretamente, mas minha linha de cursor, coluna de cor e coluna de número de linha têm fundo preto. Por que nada nunca é fácil!
Ian Vaughan

13

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

Baixe o pacote Solarized ( https://github.com/altercation/solarized ) e siga as instruções:

Abra o iTerm 2, abra Preferências, clique no ícone "Perfis" (anteriormente Endereços, anteriormente Marcadores) na barra de ferramentas de preferências e selecione a guia "cores". Clique em "carregar predefinições" e selecione "importar ...". Selecione o arquivo de tema Solarized Light ou Dark.

Agora você carregou as predefinições de cores solarizadas no iTerm 2, mas ainda não as aplicou. Para aplicá-los, basta selecionar um perfil existente na janela da lista de perfis à esquerda ou criar um novo perfil. Em seguida, selecione a predefinição Solarized Dark ou Solarized Light no menu suspenso "Load Presets".

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

Ou:

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

Modificar .vimrc

Tema escuro:

syntax enable
set background=dark
colorscheme solarized

Leve

syntax enable
set background=light
colorscheme solarized

2
Nenhuma das respostas anteriores resolve meu problema, mas esta sim. Acontece que o que faltou para mim foram as predefinições de cores.
Sophia Feng de

10

Isso funcionou para mim no OS X 10.9.1 no iTerm 2, bem como no Terminal. Um erro que eu estava cometendo foi colocar a declaração colorscheme antes das configurações termtrans e termcolors (e eu precisava de ambos para fazer funcionar). Como outros disseram, eu defini meu tipo de terminal para xterm-256color

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

colorscheme solarized
set background=dark

7

Eu tive o mesmo problema no OSX 10.11.6, iTerm2 Build 3.0.12.

Aqui está minha solução para isso.

  1. .vimrc

    syntax enable set background = dark colorscheme solarized

  2. Defina o tipo de terminal de relatório como xterm-256color.

insira a descrição da imagem aqui

  1. Definir predefinição de cor no perfil para Solarized Dark

insira a descrição da imagem aqui


Vote positivamente porque essa foi a pista de que eu precisava para tentar diferentes predefinições de cores que me levaram à descoberta de que códigos de escape de cores além de 256 são tratados de forma diferente no Mac vs Linux. No mac, as cores acima de 256 pareciam ser modificadas do que achatadas para uma das 8 cores ANSI selecionadas, enquanto no Linux parece estar fazendo um módulo que envolve e escolhe uma cor.
Eric Leschinski

6

Do criador: http://ethanschoonover.com/solarized/vim-colors-solarized

NOTA IMPORTANTE PARA USUÁRIOS DO TERMINAL:

Se você for usar Solarizado no modo Terminal (ou seja, não em uma versão GUI como gvim ou macvim), por favor, considere configurar o esquema de cores do seu emulador de terminal para usar a paleta Solarizada. Incluí paletas para alguns emuladores de terminal populares, bem como Xdefaults no download oficial do Solarized disponível na página inicial do Solarized. Se você usar Solarized sem essas cores, Solarized precisará ser instruído a degradar seu esquema de cores para um conjunto compatível com a paleta de terminal 256 limitada (enquanto usando os valores de cor de 16 ansi do terminal, você pode definir os valores específicos corretos para Solarized paleta).

Se você usar as cores de terminal personalizadas, solarized.vim deve funcionar fora da caixa para você. Se você estiver usando um emulador de terminal que suporta 256 cores e não quiser usar as cores personalizadas do terminal Solarized, você precisará usar o esquema de 256 cores degradado. Para fazer isso, basta adicionar a seguinte linha antes da linha colourschem solarizada:

let g:solarized_termcolors=256

Novamente, eu recomendo apenas alterar as cores do terminal para valores Solarizados manualmente ou por meio de um dos muitos esquemas de terminal disponíveis para importação.


Esta foi a única maneira de fazer o iTerm2 usar as cores solarizadas em MacVim não GUI.
Aaron Tribou

4

A resposta de Bill Turner funciona, mas há uma maneira de fazer com que as cores correspondam exatamente ao MacVim. Solarized possui suporte específico para iTerm2, entre outros emuladores de terminal.

  1. Vá para a página do github iterm2-colors-solarized
  2. Siga as instruções em "Instalação"
  3. Certifique-se de que seu .vimrc tenha a linha colorscheme solarized

Isso deve definir as cores do vim no iTerm2 exatamente como são nos editores de interface do usuário.


Como a resposta também sugere, a resposta de Bill Turner também está correta, mas ESTA é a maneira oficial (portanto correta) de definir o solarizedtema.
Pode

1

Uma maneira simples de resolver esse problema é:

Em cores dir em vim-color-solarized existe um arquivo chamado 'solarozed.vim'

Abra este arquivo e pesquise:
exe "let s: bg_back = '" .s: vmode. "Bg =". S: back. "'"

substitua por:
exe "let s: bg_back = '" .s: vmode. "bg =". s: none. "'"


1

Para qualquer um que ainda tivesse problemas como eu, instalei o perfil de cor solarizado iterm2 . Instalar o vim-color-solarized nos pacotes do vim e seguir as instruções era desnecessário e incompatível. Houve problemas de destaque engraçados, como na captura de tela acima.

Lição aprendida: não faça as duas coisas.


0

Tentei todas as sugestões anteriores. Acabei de adicionar set t_Co=256ao .vimrc e foi corrigido. Não precisei criar um tmuxalias ou alterar meu arquivo de configuração.


0

Nenhuma das respostas anteriores funcionou para mim. Aparentemente eu estava perdendo:

set termguicolors
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.