O fundo do Colorscheme não está correto no terminal


13

Importei o esquema e a paleta de cores solarizados. Meu terminal tem as cores e o plano de fundo corretos, o gvim tem as cores e o plano de fundo corretos, mas o vim tem um plano de fundo colorido incorretamente. O texto está todo correto, mas o fundo parece ser preto puro.

Esta é uma comparação do Terminal, GVim e Vim

Aqui está o meu .vimrc:

syntax enable

if has('gui_running')
    set background=dark
else
    set background=dark
endif

:set t_Co=256
let g:solarized_termcolors=256
colorscheme solarized

Se alguém tiver alguma sugestão sobre o que poderia estar causando isso, eu ficaria muito grato. Eu corro o xubuntu com o terminal padrão.

Também devo mencionar que a opção light resulta em um fundo muito amarelo para o Vim.


1
Por "[meu] terminal tem as cores e o plano de fundo corretos", você quer dizer que seguiu os conselhos específicos sobre o Vim no terminal?
20915 Andrew Andrew

2
Eu segui o conselho, @ Andrew. Obrigado mesmo assim.
Oberdiear

@Oberdiear O conselho ao qual Andrew se refere explica que você deve configurar seu terminal para usar cores solarizadas, e não usar a g:solarized_termcolors=256opção. Se você gosta de usar cores solarizadas em seu terminal, esse método funciona muito melhor. O texto da sua pergunta implica que você tenha configurado seu terminal para usar cores Solarizado (embora a imagem que você exibir não olha para mim como ele faz), então nesse caso, por que você está usando a g:solarized_termcolors=256configuração?
20515 Rich

Qual terminal você está usando? Eu tenho esse script para gnome-terminal.
wchargin

@ Rich, acho que não tenho a paleta configurada corretamente. Você (ou outra pessoa) sabe como configurá-lo corretamente para o Xfce Terminal?
Oberdiear

Respostas:


10

Há duas razões pelas quais acho que isso pode estar acontecendo:

  1. O esquema de cores solarizadas que você está usando não declara ctermfge ctermbgpara nenhum dos recursos que você deseja destacar. Experimente este esquema de cores , deve parecer essencialmente o mesmo tanto dentro do seu terminal quanto no gvim; se esse for o caso, talvez seja necessário investigar o uso de um esquema de cores que declare ctermfge ctermbg.

  2. Pode ser necessário verificar se o emulador de terminal suporta as cores que você está tentando exibir:


Observe que ambas as coisas podem estar acontecendo ao mesmo tempo, mas é difícil diagnosticar isso sem mais informações sobre o seu sistema.


O desert256 funciona bem, mas eu não sou um grande fã. Eu acredito que a TERMvariável está incorreta, mas não tenho idéia de como alterá-la.
Oberdiear

2
Eu instalei ncurses-term. Eu então executei o comando. Depois de executá-lo, todo o texto fica cinza e o fundo fica preto.
Oberdiear

1
Deveria ser export TERM=xterm+256color, NÃO "cor s " (plural). Além disso, acredito que é deve ser xterm-256color, e não "** + ** 256color;. Mas eu posso estar errado especificamente sobre a usá-lo com solarizados De acordo com esta resposta ,# Entries with embedded plus signs are designed to be included through use/tc capabilities, not used as standalone entries.
Edward

export TERM=xterm+256colorno OSX eu recebozle-line-finish:echoti:1: no such terminfo capability: rmkx
Xeoncross

Eu tive esse problema exato e export TERM=xterm+256colorsajudei o vim solarizado a detectar e usar a cor exata do plano de fundo como o meu terminal possui.
Shyam Habarakada

5

Boas notícias para todos. @ Tom e @ Rich me colocaram no caminho certo. Encontrei uma solução fornecida aqui . Defino meu .vimrc como simples

syntax enable
set background=dark
set t_Co=16
colorscheme solarized

Isso parece consertar tudo. As cores não parecem tão brilhantes nos exemplos de fontes , mas isso poderia muito bem ser eu. Para quem quer usar o esquema de cores Solarized e usar o xfce4-terminal, apenas alterar o terminalrc e o .vimrc parecia resolver meus principais problemas. Obrigado a todos por sua ajuda!


1
Você não precisa da set t_Colinha no vimrc: o Vim pode ler esse valor no terminal (a configuração 't_Co'parece um pouco de culto à carga do Vim: muitas pessoas online recomendam fazê-lo sem entender realmente os problemas que estão tentando resolver .)
Rich

Vou apenas dizer "screen" e "tmux" - essas ferramentas alteram a variável $ TERM para que o vim não possa ler as informações necessárias.
NieDzejkob

@NieDzejkob Você pode usar um multiplexador de terminal e ainda ter um terminal configurado corretamente.
Rich

@ Rich você se importa de explicar qual é a solução certa no lado do terminal? Estou usando o tmux $TERM=screene o setting t_Co=16corrige problemas visuais para mim, mas eu gostaria de saber qual é o relacionamento, em primeiro lugar.
ffledgling

@ffledgling eu adoraria. Pode exigir um pouco de vaivém, no entanto, então junte-se a mim no bate-papo .
Rich

4

Eu acho que é uma questão de compatibilidade disso colorschemecom o terminal. O plugin csaproxmilagrosamente resolve muitos desses problemas.

Sinopse:

É difícil encontrar esquemas de cores para o terminal Vim. A maioria dos esquemas de cores é escrita para suportar apenas o GVim e não funciona no terminal Vim.

Este plug-in faz com que os esquemas de cores somente do GVim funcionem no terminal Vim, desde que o terminal suporte 88 ou 256 cores - e a maioria deles atualmente. Isso geralmente não requer interação do usuário (mas veja a ajuda sobre o que fazer se as coisas não funcionarem). Depois de instalar esse plug-in, qualquer vez que você o usar, :colorschemeele fará sua mágica e fará com que o esquema de cores funcione.

Links para o plugin:


1
Este é um plugin útil, mas não ajudará aqui, pois o esquema de cores solarizado já faz um esforço considerável para trabalhar no terminal Vim em terminais de 16 e 256 cores.
Rico

4

O terminal solarizado - esquema de cores Vim pode funcionar de uma de duas maneiras diferentes.

  1. Um modo de 16 cores: Solarized contém apenas 16 cores; portanto, nesse modo, você define seu terminal para usar as cores solarizadas como 16 cores, e o esquema de cores Vim apenas as utiliza. Por exemplo, o esquema de cores do Vim solicitará a cor do terminal "1" e o terminal exibirá isso como a cor hexadecimal # dc322f.

  2. Um modo de 256 cores, onde seleciona as correspondências mais próximas para suas 16 cores em uma paleta de 256 cores.

O método anterior é fortemente recomendado pelo autor (e por mim), e parece que você está feliz em usar esse método porque afirma que o seu "terminal tem as cores e o plano de fundo corretos".

No entanto, a partir da captura de tela, parece que seu terminal não possui as cores corretas definidas. (O branco não é uma cor no conjunto solarizado e, embora não tenha sido ocultado, a outra cor do texto na captura de tela não me parece uma "Violeta" solarizada (# 6c71c4).)

Se você remover a configuração de linhas t_Co e g:solarized_termcolorsdo vimrc * e configurar as cores do terminal corretamente, deverá verificar que o esquema de cores solarizadas de 16 cores começará a funcionar.

* Essas linhas passam a usar o modo solar (menos fiel) de 256 cores. Isso também deve funcionar (suspeito que o @Jubal esteja correto ao sugerir que o BCE é o problema aqui ), mas o modo de 16 cores é preferível, a menos que você não queira usar a energia solar em seu terminal.


Eu acredito que você está completamente no caminho certo. Acho que não tenho a paleta instalada corretamente. Você poderia me orientar no processo? Agradeço sua ajuda, @Rich.
Oberdiear

1
Parece que seu primeiro link está morto.
akozi 12/02/19

@azoki Obrigado por me informar. Parece que o site Solarized está em (re) construção. Eu mudei o link para apontar para o repositório do github por enquanto.
Rich

3

Parece que você encontrou sua resposta. Eu tive esse mesmo problema e nada acima funcionou. O que funcionou para mim foi usando briga determinalrc , ao contrário de sgerrand de .

O meu relevante vimrcé simplesmente:

syntax enable
set background=dark
colorscheme solarized

Espero que ajude alguém!


1

Então é isso que funciona para mim (em todos os terminais que eu costumava usar - xterm, konsole, gnome-terminal, iterm2, roxterm - no Linux e OS X, também com gvim e macvim):

" no other configuration than this needed for solarized
colorscheme solarized
highlight SpecialKey ctermfg=11 ctermbg=8

if &term =~ '256color'
  " Disable Background Color Erase (BCE) so that color schemes work
  " properly within 256-color terminals
  set t_ut=
endif

Isso causou um problema semelhante ao definir t_Co = 16. Estou bastante certo de que tenho um problema com a paleta, mas ainda tenho que descobrir.
Oberdiear

Qual emulador de terminal você está usando? Se bem me lembro, a configuração solarizada integrada do konsole não é totalmente utilizável e é preciso usar as configurações do repositório solarizado original ...
Jubal

Eu uso o Terminal Xfce.
Oberdiearear 23/02

Acho que consegui funcionar: tente forçar o TERM a xterm-256color, enquanto usa a predefinição solarizada das preferências do terminal, não do repositório git solarizado do xfce-terminal. Isso, juntamente com o hack do BCE acima, fez o truque do xfce4-terminal para mim.
Jubal

(Ainda há algo suspeito com a emulação de terminal subjacentes e renderização de fontes, e eu acho que eu fui lembrado por isso que eu voltei para a planície xterm idade em Linux ...)
Jubal

0

Foi muito difícil trabalhar (eu uso o terminal Vim no Linux Mint) e, infelizmente, não anotei as especificidades de tudo o que fiz. Aqui está a seção relevante do meu vimrc:

syntax enable
set background=dark
set t_Co=16
colo solarized

Também pode valer a pena conferir este projeto no GitHub .


set t_Co = 16 faz com que as cores sejam radicalmente diferentes do esperado. Também estou usando o terminal Xubuntu padrão é o Xfce-Terminal.
Oberdiear

@Oberdiear Se a configuração t_Co = 16 afeta as cores dessa maneira (com a variável g: solarized_termcolors desabilitada), isso significa que as cores do terminal não estão configuradas corretamente para usar a energia solarizada. Como você está definindo as cores dos terminais?
20515 Rich

0

O que funcionou para mim foi remover esta parte das suas configurações

if has('gui_running')
   set background=dark
else
   set background=dark
endif

Estou executando um terminal xfce4


0

Eu também tive esse problema com xfce-terminal .

Depois de um pouco de pesquisa, descobri esse bug : qualquer coisa que você definir como $TERMno seu terminal XFCE é ignorada silenciosamente.

Eu acho que isso é realmente um bug da biblioteca VTE antiga subjacente (e não mantida) que o terminal XFCE (ainda baseado em GTK + 2) usa. A mudança para um terminal GTK + 3, que usa implicitamente a nova biblioteca VTE , resolveu o problema.

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.