El fondo de Colorscheme no es correcto en la terminal

13

Importé el esquema de colores y la paleta solarizados. Mi terminal tiene los colores y el fondo correctos, gvim tiene los colores y el fondo correctos, pero vim tiene un fondo de color incorrecto. El texto es todo correcto, pero el fondo parece ser negro puro.

Esta es una comparación de Terminal, GVim y Vim

Aquí está mi .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

Si alguien tiene alguna sugerencia sobre lo que podría estar causando esto, estaría muy agradecido. Ejecuto xubuntu con la terminal predeterminada.

También debo mencionar que la opción de luz da como resultado un fondo muy amarillo para Vim.

Oberdiear
fuente
1
Con "[m] y terminal tiene los colores y el fondo correctos", ¿quiere decir que siguió los consejos específicos sobre Vim en el terminal?
Andrew
2
Seguí el consejo, @ Andrew. Gracias de cualquier forma.
Oberdiear
@Oberdiear El consejo al que Andrew se vincula explica que debe configurar su terminal para usar colores solarizados, y no usar la g:solarized_termcolors=256opción. Si está contento de usar colores solarizados en su terminal, este método funciona mucho mejor. El texto de su pregunta implica que ha configurado su terminal para usar colores solarizados (aunque la captura de pantalla que muestra no me parece que es así), entonces, en ese caso, ¿por qué está usando la g:solarized_termcolors=256configuración?
Rico
¿Qué terminal estás usando? Tengo este script para gnome-terminal.
wchargin
@ Rich, supongo que no tengo la paleta configurada correctamente. ¿Sabe usted (o alguien más) cómo configurarlo correctamente para Xfce Terminal?
Oberdiear

Respuestas:

10

Hay dos razones por las que creo que esto puede estar sucediendo:

  1. El esquema de color solarizado que está utilizando no declara ctermfgy ctermbgpara cualquiera de las características que desea resaltar. Pruebe este esquema de color , debe verse esencialmente igual tanto dentro de su terminal como en gvim, si este es el caso, es posible que deba considerar el uso de un esquema de color que declare ctermfgy ctermbg.

  2. Es posible que deba asegurarse de que su emulador de terminal admita los colores que está tratando de mostrar:


Tenga en cuenta que ambas cosas podrían estar sucediendo al mismo tiempo, pero es difícil diagnosticar esto sin más información sobre su sistema.

El Developer
fuente
El desert256 funciona bien, pero no soy un gran admirador. Creo que la TERMvariable es incorrecta, pero no tengo idea de cómo cambiarla.
Oberdiear
2
Instalé ncurses-term. Entonces ejecuté el comando. Después de ejecutarlo, todo el texto se vuelve gris y el fondo es negro.
Oberdiear
1
Debe ser export TERM=xterm+256color, NO "color s " (plural). Además, creo que debería ser xterm-256color, NO "** + ** 256color; pero puedo estar equivocado específicamente sobre su uso con solarizado. De acuerdo con esta respuesta ,# Entries with embedded plus signs are designed to be included through use/tc capabilities, not used as standalone entries.
Edward
export TERM=xterm+256coloren OSX consigozle-line-finish:echoti:1: no such terminfo capability: rmkx
Xeoncross
Tuve este problema exacto y export TERM=xterm+256colorsayudé a vim solarized a detectar y usar el color de fondo exacto que tiene mi terminal.
Shyam Habarakada
5

Buenas noticias para todos. @Tom y @Rich me pusieron en el camino correcto. Encontré una solución provista aquí . Configuré mi .vimrc a lo simple

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

Esto parece arreglar todo. Los colores no parecen ser tan brillantes en los ejemplos de fuentes , pero podría muy bien ser yo. Para cualquiera que quiera usar el esquema de colores Solarized y use xfce4-terminal, solo cambiar el terminalrc y el .vimrc parecían resolver mis principales problemas. ¡Gracias a todos por vuestra ayuda!

Oberdiear
fuente
1
No debería necesitar la set t_Colínea en su vimrc: Vim puede leer este valor desde la terminal (la configuración 't_Co'parece ser un poco un culto a la carga de Vim: muchas personas en línea recomiendan hacerlo sin comprender realmente los problemas que intentan resolver) .)
Rico
Solo diré "screen" y "tmux": estas herramientas cambian la variable $ TERM para que vim no pueda leer la información que necesita.
NieDzejkob
@NieDzejkob Puede usar un multiplexor de terminal y aún así tener un terminal configurado correctamente.
Rico
@Rich, ¿te importaría explicar cuál es la solución correcta en el lado del terminal? Estoy usando tmux con $TERM=screeny la configuración t_Co=16realmente soluciona los problemas visuales para mí, pero me gustaría saber cuál es la relación, en primer lugar.
novato
@flinggling me encantaría. Sin embargo, podría requerir un poco de ida y vuelta, así que únete a mí en el chat .
Rico
4

Supongo que es un problema de compatibilidad de esto colorschemecon la terminal. El complemento csaproxresuelve milagrosamente un montón de estos problemas.

Sinopsis:

Es difícil encontrar esquemas de colores para el terminal Vim. La mayoría de los esquemas de colores están escritos para admitir solo GVim y no funcionan en absoluto en el terminal Vim.

Este complemento hace que los esquemas de colores de GVim solo funcionen en el terminal Vim, siempre que el terminal admita 88 o 256 colores, y la mayoría lo hace en estos días. Esto generalmente no requiere interacción del usuario (pero vea la ayuda para saber qué hacer si las cosas no funcionan). Después de instalar este complemento correctamente, cada vez que lo use :colorschemehará su magia y hará que el esquema de colores simplemente funcione.

Enlaces al complemento:

Jonatas Eduardo
fuente
1
Este es un complemento útil, pero no ayudará aquí, ya que el esquema de colores solarizado ya hace un esfuerzo considerable para trabajar en el terminal Vim en terminales de 16 colores y 256 colores.
Rico
4

El esquema de colores del terminal Vim solarizado puede funcionar de dos maneras diferentes.

  1. Un modo de 16 colores: Solarized solo contiene 16 colores, por lo que en este modo configura su terminal para usar los colores solarizados como sus 16 colores, y el esquema de colores Vim solo los usa. Entonces, por ejemplo, el esquema de colores Vim solicitará el color del terminal "1", y el terminal lo mostrará como el color hexadecimal # dc322f.

  2. Un modo de 256 colores, donde selecciona las coincidencias más cercanas para sus 16 colores de una paleta de 256 colores.

El autor (y yo) recomienda encarecidamente el método anterior , y parece que está contento de utilizar este método porque declara que su "terminal tiene los colores y el fondo correctos".

Sin embargo, de su captura de pantalla parece que su terminal no tiene los colores correctos establecidos. (El blanco no es un color en el conjunto solarizado, y aunque no lo he echado a perder, el otro color de texto en la captura de pantalla no me parece que sea "Violeta" Solarizado (# 6c71c4)).

Si elimina la configuración de líneas t_Coy g:solarized_termcolorsde su vimrc *, y configura los colores de su terminal correctamente, entonces debería encontrar que el esquema de colores solarizado de 16 colores comenzará a funcionar.

* Estas líneas cambian de solarizado a su modo de 256 colores (menos fiel). Esto también debería funcionar (sospecho que @Jubal es correcto al sugerir que BCE es el problema aquí ), pero el modo de 16 colores es preferible a menos que explícitamente no desee usar solarizado en su terminal.

Rico
fuente
Creo que estás completamente en el camino correcto. Creo que no tengo la paleta instalada correctamente. ¿Podrías guiarme por el proceso? Agradezco toda su ayuda, @Rich.
Oberdiear
1
Parece que tu primer enlace ahora está muerto.
akozi
@azoki Gracias por hacérmelo saber. Parece que el sitio Solarizado está en (re) construcción. Cambié el enlace para señalar el repositorio de github por el momento.
Rico
3

Parece que encontraste tu respuesta. Tuve este mismo problema y nada de lo anterior funcionó. Lo que funcionó para mí fue usar altercadosterminalrc , en lugar de sgerrand's .

Mi relevante vimrces simplemente:

syntax enable
set background=dark
colorscheme solarized

Espero que ayude a alguien!

Oh tan agradable
fuente
1

Esto es lo que funciona para mí (en todos los terminales que solía usar: xterm, konsole, gnome-terminal, iterm2, roxterm, tanto en Linux como en OS X, también con gvim y 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
Jubal
fuente
Esto causó un problema similar al configurar t_Co = 16. Estoy bastante seguro de que tengo un problema con la paleta, pero aún tengo que resolverlo.
Oberdiear
¿Qué emulador de terminal estás usando? Si no recuerdo mal, la configuración solarizada incorporada de konsole no es totalmente utilizable y uno necesita usar la configuración del repositorio solarizado original ...
Jubal
Yo uso Xfce Terminal.
Oberdiear
Creo que lo hice funcionar: intente forzar TERM a xterm-256color, mientras uso el preajuste solarizado desde las preferencias del terminal, no desde el repositorio git xfce-terminal solarizado. Esto, junto con el truco BCE anterior, fue el truco para xfce4-terminal para mí.
Jubal
(Todavía hay algo sospechoso con la emulación de terminal subyacente y la representación de fuentes, y creo que me recordó por qué volví a xterm en Linux ...)
Jubal
0

Fue difícil trabajar (utilizo el terminal Vim en Linux Mint), y desafortunadamente no escribí los detalles de todo lo que hice. Aquí está la sección relevante de mi vimrc:

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

También puede valer la pena echarle un vistazo a este proyecto en GitHub .

Tom
fuente
set t_Co = 16 hace que los colores sean radicalmente diferentes de lo esperado. También estoy usando el terminal predeterminado de Xubuntu es Xfce-Terminal.
Oberdiear
@Oberdiear Si la configuración t_Co = 16 afecta los colores de esa manera (con la variable g: solarized_termcolors deshabilitada), eso significa que los colores de su terminal no están configurados correctamente para usar solarizado. ¿Cómo está configurando los colores de su terminal?
Rico
0

Lo que funcionó para mí fue eliminar esta parte de su configuración

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

Estoy ejecutando un terminal xfce4

nisennenmondai
fuente
0

También tuve este problema con xfce-terminal.

Después de un poco de investigación, descubrí este error : todo lo que establezca como $TERMen su terminal XFCE se ignora en silencio.

Creo que esto es realmente un error de la biblioteca VTE antigua subyacente (y sin mantenimiento) que utiliza el terminal XFCE (todavía basado en GTK + 2). Cambiar a un terminal GTK + 3, que implícitamente usa la nueva biblioteca VTE , resolvió el problema.

ntd
fuente