Colores incorrectos con vim en iTerm2 usando Solarized


84

Tengo un problema extraño con iTerm2, en la terminal vim (no gui) y el esquema de color solarizado. Primero, configuré iTerm2 para usar el esquema de color oscuro solarizado.

También estoy usando solarized para vim. Tengo las siguientes líneas en mi .vimrc

set background=dark
colorscheme solarized

En la terminal, la combinación de colores parece incorrecta: consola vim

Como referencia, así es como se ve en MacVim (gui vim) gui vim

¿Qué necesito cambiar en iTerm o en mi .vimrc para que los colores se vean correctamente en mi consola vim?

Respuestas:


118

Un par de cosas para comprobar:

  1. En iTerm2, en Preferencias -> Perfiles -> Terminal, en "Emulación de terminal" tiene "Informe Tipo de terminal:" configurado en xterm-256color.

  2. En su .vimrc, hay algunas opciones que también puede configurar para asegurarse de que esté usando 256 colores:

    set background=dark
    " solarized options 
    let g:solarized_visibility = "high"
    let g:solarized_contrast = "high"
    colorscheme solarized
    
    Y uno de esos debería funcionar, pero el número 1 primero.

PERO, si está usando el vim predeterminado, integrado en Snow Leopard, no funcionará, ya que no está construido con soporte para 256 colores. Creo que la versión incorporada en Lion sí.

Editar: Basado en varios comentarios sobre esta respuesta, eliminé la let g:solarized_termcolors = 256línea del .vimrcejemplo anterior. Parece que podría ser un problema para algunos. Otro dice que agregar la línea let g:solarized_termcolors = 16solucionó un problema de visualización en color. Su propio kilometraje puede variar.

Segunda edición: si ha cargado la paleta de colores solarizada en iTerm2, debe hacerlo let g:solarized_termcolors=16. Sólo let g:solarized_termcolors=256si está no está usando la paleta de solarización como su color preestablecido iTerm2.


13
En realidad, "let g: solarized_termcolors = 256" fue la causa de que solarized se visualizara incorrectamente para mí. Según el repositorio de git ( github.com/vim-scripts/Solarized ), "NOTA IMPORTANTE PARA LOS USUARIOS DE TERMINALES:", debe "dejar g: solarized_termcolors = 16".
Sai Perchard

3
Si está utilizando el esquema de color solarizado con su terminal, los 16 colores ANSI se establecerán en los colores solarizados, en cuyo caso desea establecerlo let g:solarized_termcolors=16. Si usa 256 estará cerca, pero el fondo será gris en lugar del azul profundo del mar.
Parker Selbert

2
Parece que 256me da el fondo gris en lugar de azul oscuro en Lion, pero se 16ve exactamente igual que omitir esa variable de mi vimrc. Bueno, el gris oscuro es mejor que el gris claro que tenía antes.
styfle

1
El comentario de @SaiPerchard debe agregarse a la respuesta. Para mí, esto fue lo que solucionó el color de fondo incorrecto.
Marten Sytema

1
No funcionó para mí: stackoverflow.com/a/12969298/1945990 sí lo hizo. ITerm, tema solarizado más tema vim solarizado.
Mike W

91

Las respuestas anteriores no funcionaron para mí.

Estoy usando iTerm2 con vim 7.3 en OS X 10.7.4.

Si las soluciones anteriores tampoco funcionaron para usted, intente esto

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

Actualización: Según Jim Stewart, esto también funciona en Kitty .


Lo mismo para mí aquí ... ¡Gracias por esa solución!
freitass

2
Estoy usando KiTTY (derivado de PuTTY) en Windows 7 y let g:solarized_termtrans = 1solucioné un problema en el que el color de fondo en las líneas en blanco era gris, pero el color de fondo en las líneas con texto era negro después del contenido.
Jim Stewart

no son negros thuogh :(
Setheron

Si está utilizando cualquier otro esquema de color, puede hi Normal ctermbg=NONE, ya que eso es esencialmente lo que termtranshace en solarizado (por lo que puedo decir de su fuente)
Achal Dave

1
Esto es lo más cercano a trabajar, establece el color de fondo correctamente, pero mi línea de cursor, columna de color y columna de número de línea tienen fondo negro. ¿Por qué nada es fácil?
Ian Vaughan

13

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

Descargue el paquete Solarized ( https://github.com/altercation/solarized ) y siga las instrucciones:

Abra iTerm 2, abra Preferencias, haga clic en el icono "Perfiles" (anteriormente Direcciones, anteriormente Marcadores) en la barra de herramientas de preferencias, luego seleccione la pestaña "colores". Haga clic en "cargar ajustes preestablecidos" y seleccione "importar ...". Seleccione el archivo de tema Solarized Light u Dark.

Ahora ha cargado los ajustes preestablecidos de color solarizado en iTerm 2, pero aún no los ha aplicado. Para aplicarlos, simplemente seleccione un perfil existente de la ventana de la lista de perfiles a la izquierda, o cree un nuevo perfil. Luego seleccione el ajuste preestablecido Solarized Dark o Solarized Light del menú desplegable "Load Presets".

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

O:

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

Modificar .vimrc

Tema oscuro:

syntax enable
set background=dark
colorscheme solarized

Ligero

syntax enable
set background=light
colorscheme solarized

2
Ninguna de las respuestas anteriores resuelve mi problema, pero esta sí. Resulta que lo que me faltaba eran los ajustes preestablecidos de color.
Sophia Feng

10

Esto funcionó para mí en OS X 10.9.1 en iTerm 2 y en Terminal. Un error que estaba cometiendo fue poner la declaración del esquema de colores antes de la configuración de termtrans y termcolors (y necesitaba ambos para que funcionara). Como han dicho otros, configuré mi tipo de terminal en xterm-256color

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

colorscheme solarized
set background=dark

7

Luché con el mismo problema en OSX 10.11.6, iTerm2 Build 3.0.12.

Aquí está mi solución.

  1. .vimrc

    habilitación de sintaxis establecer fondo = esquema de colores oscuros solarizado

  2. Establezca Report Terminal Type en xterm-256color.

ingrese la descripción de la imagen aquí

  1. Establecer el color preestablecido en el perfil en Solarized Dark

ingrese la descripción de la imagen aquí


Voto porque esta era la pista que necesitaba para probar diferentes ajustes preestablecidos de color que me llevaron al descubrimiento de que los códigos de escape de color más allá de 256 se tratan de manera diferente en mac vs linux. En Mac, los colores más allá de 256 parecían estar modificados en lugar de aplanados a uno de los 8 colores ANSI seleccionados, mientras que en Linux parece estar haciendo un módulo que envuelve y elige un color.
Eric Leschinski

6

Del creador: http://ethanschoonover.com/solarized/vim-colors-solarized

NOTA IMPORTANTE PARA USUARIOS DE TERMINALES:

Si va a usar Solarized en modo Terminal (es decir, no en una versión GUI como gvim o macvim), por favor considere configurar el esquema de colores de su emulador de terminal para usar la paleta Solarized. He incluido paletas para algunos emuladores de terminal populares, así como Xdefaults en la descarga oficial de Solarized disponible en la página de inicio de Solarized. Si usa Solarized sin estos colores, deberá decirle a Solarized que degrade su esquema de colores a un conjunto compatible con la paleta limitada de 256 terminales (mientras que al usar los 16 valores de color ansi del terminal, puede establecer los valores específicos correctos para Solarized paleta).

Si usa los colores de terminal personalizados, solarized.vim debería funcionar de inmediato. Si está utilizando un emulador de terminal que admite 256 colores y no desea utilizar los colores de terminal Solarized personalizados, deberá utilizar el esquema degradado de 256 colores. Para hacerlo, simplemente agregue la siguiente línea antes de la línea solarizada de colorschem:

let g:solarized_termcolors=256

Una vez más, recomiendo simplemente cambiar los colores de su terminal a valores Solarizados, ya sea manualmente o mediante uno de los muchos esquemas de terminal disponibles para importar.


Esta era la única forma en que podía hacer que iTerm2 usara los colores solarizados en MacVim sin GUI.
Aaron Tribou

4

La respuesta de Bill Turner funciona, pero hay una manera de hacer que los colores coincidan exactamente con MacVim. Solarized tiene soporte específicamente para iTerm2, entre otros emuladores de terminal.

  1. Ir a la página de github iterm2-colors-solarized
  2. Siga las instrucciones en "Instalación"
  3. Asegúrese de que su .vimrc tenga la línea colorscheme solarized

Esto debería configurar los colores de vim en iTerm2 para que sean exactamente como están en los editores de interfaz gráfica de usuario.


Como también sugiere la respuesta, la respuesta de Bill Turner también es correcta, pero ESTA es la forma oficial (por lo tanto correcta) de establecer el solarizedtema.
Puede el

1

Una forma sencilla de resolver este problema es:

En colores dir en vim-color-solarized existe un archivo llamado 'solarozed.vim'

Abra este archivo y busque:
exe "let s: bg_back = '" .s: vmode. "Bg =". S: back. "'"

reemplace a:
exe "let s: bg_back = '" .s: vmode. "bg =". s: none. "'"


1

Para cualquiera que todavía tenga problemas como yo, instalé el perfil de color solarizado iterm2 . La instalación de vim-color-solarized en paquetes de vim y seguir las instrucciones era innecesaria e incompatible. Hubo problemas de resaltado divertidos como en la captura de pantalla anterior.

Lección aprendida: no hagas ambas cosas.


0

Probé todas las sugerencias anteriores. Acabo de agregar set t_Co=256a .vimrc y se solucionó. No necesitaba crear un tmuxalias o cambiar mi archivo de configuración.


0

Ninguna de las respuestas anteriores funcionó para mí. Aparentemente me faltaba:

set termguicolors
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.