Cómo hacer que VIM muestre 256 colores correctamente


17

Estoy tratando de obtener 256 archivos de temas de color para que funcionen con VIM en xterm.

Así es como me busca Peaksea :

ingrese la descripción de la imagen aquí

Cómo debería verse: como debería verse

He intentado seguir los consejos de la página wiki sin éxito.

set t_Co=256 funciona bien pero

set t_AB=^[[48;5;%dm
set t_AF=^[[38;5;%dm

da como resultado que las secuencias de escape se muestren en el terminal:

EDITAR: Mikel tenía razón, necesitaba escribir Ctrl + v + Esc para ingresar ^ [correctamente. Sin embargo, eso no ha solucionado mi problema.

ingrese la descripción de la imagen aquí

Entonces, ¿qué otros cambios puedo intentar para que esto funcione?

información adicional

$ uname -a
Linux xxxxxxx 3.4.7-1-ARCH #1 SMP PREEMPT Sun Jul 29 22:02:56 CEST 2012 x86_64 GNU/Linux

-

$ xterm -version 
XTerm(281)

-

$ vim --version
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Jul 13 2012 05:24:27)
Included patches: 1-600
Compiled by ArchLinux
Big version with GTK2 GUI.  Features included (+) or not (-):
+arabic +autocmd +balloon_eval +browse ++builtin_terms +byte_offset +cindent 
+clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments 
+conceal +cryptv +cscope +cursorbind +cursorshape +dialog_con_gui +diff 
+digraphs +dnd -ebcdic +emacs_tags +eval +ex_extra +extra_search +farsi 
+file_in_path +find_in_path +float +folding -footer +fork() +gettext 
-hangul_input +iconv +insert_expand +jumplist +keymap +langmap +libcall 
+linebreak +lispindent +listcmds +localmap +lua +menu +mksession +modify_fname 
+mouse +mouseshape +mouse_dec +mouse_gpm -mouse_jsbterm +mouse_netterm 
-mouse_sysmouse +mouse_xterm +mouse_urxvt +multi_byte +multi_lang -mzscheme 
+netbeans_intg +path_extra +perl +persistent_undo +postscript +printer -profile
 +python -python3 +quickfix +reltime +rightleft +ruby +scrollbind +signs 
+smartindent -sniff +startuptime +statusline -sun_workshop +syntax +tag_binary 
+tag_old_static -tag_any_white -tcl +terminfo +termresponse +textobjects +title
 +toolbar +user_commands +vertsplit +virtualedit +visual +visualextra +viminfo 
+vreplace +wildignore +wildmenu +windows +writebackup +X11 -xfontset +xim 
+xsmp_interact +xterm_clipboard -xterm_save 
   system vimrc file: "/etc/vimrc"
     user vimrc file: "$HOME/.vimrc"
      user exrc file: "$HOME/.exrc"
  system gvimrc file: "/etc/gvimrc"
    user gvimrc file: "$HOME/.gvimrc"
    system menu file: "$VIMRUNTIME/menu.vim"
  fall-back for $VIM: "/usr/share/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng15   -I/usr/local/include  -march=x86-64 -mtune=generic -pipe -fstack-protector --param=ssp-buffer-size=4  -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1      
Linking: gcc   -L. -Wl,-O1,--sort-common,--as-needed,-z,relro,--hash-style=gnu -rdynamic -Wl,-export-dynamic  -Wl,-E -Wl,-rpath,/usr/lib/perl5/core_perl/CORE  -Wl,-O1,--sort-common,--as-needed,-z,relro -L/usr/local/lib -Wl,--as-needed -o vim   -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lglib-2.0   -lSM -lICE -lXt -lX11 -lXdmcp -lSM -lICE -lm -lncurses -lnsl   -lacl -lattr -lgpm -ldl  -L/usr/lib -llua  -Wl,-E -Wl,-rpath,/usr/lib/perl5/core_perl/CORE -Wl,-O1,--sort-common,--as-needed,-z,relro,--hash-style=gnu -fstack-protector -L/usr/local/lib  -L/usr/lib/perl5/core_perl/CORE -lperl -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc -L/usr/lib/python2.7/config -lpython2.7 -lpthread -ldl -lutil -lm -Xlinker -export-dynamic   -lruby -lpthread -lrt -ldl -lcrypt -lm  -L/usr/lib   

-

$ ls -l /usr/share/terminfo/x/xterm-256color 
-rw-r--r-- 1 root root 3336 Feb  8  2012 /usr/share/terminfo/x/xterm-256color

.vimrc

set t_Co=256

.X predeterminado

!--------------------- XTERM ------------------------
xterm*dynamicColors:    true
xterm*background:       black
xterm*foreground:        #BBBBBB
xterm*utf8:             2
xterm*eightBitInput:    true
xterm*saveLines:        32767
xterm*scrollTtyKeypress:       true
xterm*scrollTtyOutput:  false
xterm*scrollBar:        false
xterm*loginShell:       true
xterm*faceName:         xft:Dejavu Sans Mono:size=10
xterm*jumpScroll:       true
xterm*multiScroll:      true
xterm*toolBar:          false
xterm*geometry:         100x30

EDITAR: soluciones intentadas

Ya instalé rxvt-unicode y estaba usando eso anteriormente. Sin embargo tuve el mismo problema. Aquí hay una comparación lado a lado de los dos. A la izquierda está xterm y a la derecha está urxvt. El archivo abierto es .Xdefaults, que muestra la configuración de urxvt, ¿cuál podría ser el problema?

xterm izquierda urxvt derecha

También ejecuté el script de prueba de color con resultados aparentemente positivos. La parte superior es xterm la parte inferior es urxvt. superior xterm inferior urxvt

$ echo $TERM
xterm-256color

Solución alternativa

Ahora estoy usando CSApprox y parece funcionar bastante bien. Lo que aún me confunde es por qué el tema no funciona a pesar de que tiene la configuración de color de consola adecuada definida. Quizás tenga algo que ver con la forma en que vim se considera a sí mismo. Se instaló como parte del paquete gvim para que pueda ignorar la configuración de cterm.

EDITAR: Y ahora todo parece estar bien ...

Extrañamente después de instalar CSApprox y luego eliminarlo, todo parece funcionar como debería. Acabo de descargar otro esquema de colores y se cargó perfectamente incluso sin ejecutar el módulo CSApprox.


¿Cuál es tu $ TERM? ¿Vim sabe que puede usar 256 colores?
Richard Hum

1
xterm es bastante problemático con UTF8 y colores y tal. ¿Has considerado usar urxvty ahorrarte la molestia? ( pacman -S rxvt-unicode).
Caleb

1
¿Cómo escribiste ^[? Debe hacerlo usando Ctrl + V + Esc.
Mikel

@Mikel tenías razón sobre eso, pero parece que no ha hecho la diferencia
jmathew

@Caleb ¿Qué problemas quieres decir? De hecho, cambié de rxvt a xterm para un mejor soporte UTF-8 y 256 colores funcionan en ambos para mí. Sin TERM=screen-256colorembargo, uso debido a tmux, pero las cosas también funcionan con xterm-256colortmux externo.
jw013

Respuestas:


3

Caleb tiene razón en su comentario. xterm es bastante antiguo y debería considerar cambiar a urxvt: al menos la versión habilitada para 256 y utf-8, consulte a su administrador de paquetes para instalar la correcta.

Tengo una configuración idéntica a la suya: impresionante WM, vim, urxvt, tmux / screen, y todos funcionan bien con 256 colores y utf-8. He configurado TERMINAR xterm-256coloren caso de que necesite configurarlo manualmente.

Hum ... Después de su edición, ¿puede verificar si el tema de color vim está correctamente definido para terminales?


No estoy seguro de lo que quieres decir exactamente. peaksea.vim usa ctermfg / ctermbg pero también tiene funciones de interfaz gráfica de usuario definidas. ¿Podría eso interferir?
jmathew

¿Podrías probar con un esquema de color diferente? No espero que esto haga una gran diferencia, pero nunca se sabe. La otra cosa que se me ocurre es volver a compilar vim desde la fuente forzando 256 colores por defecto. Tal vez el paquete en el arco es extraño ...
Sardathrion - Restablecer Monica

1

No solo su terminal debe admitir 256 colores, el tema en vim se referirá a los colores en sus .Xdefaults / .Xresources. Para solucionarlo, debe usar los mismos colores que el autor del tema o usar gvim en su lugar.

Al echar un vistazo al código, puedo ver que admite gvim correctamente, por eso funciona CSAprox, ya que toma códigos de color gvim en HEX (por ejemplo: # 123ABC) y los traduce a los colores de su terminal, creo.

Ejemplo

Vim en modo consola tomará los colores de:

hi Normal ctermfg=16 ctermbg=254

mientras está en modo gráfico:

hi Normal guifg=#d0d0d0 guibg=#202020

Entonces, si instaló algún tipo de "tema" para los colores de su terminal, afectaría los colores que obtiene en Vim. Además, verifique que tenga

set background=dark

en tu .vimrc


Sí, entiendo que cterm es lo que usa cuando está en la consola. La cuestión es que no tengo ningún archivo .Xresources y nada en mis .Xdefaults que establezca el color de otro modo, tal vez sea un primer plano y un fondo. Ninguno de los colores está redefinido. Lo único que podría imaginar es si el autor tenía un .Xdefaults / .Xresources definido que difería de los predeterminados. Pero parece que cada tema de término de 256 colores que uso varía significativamente de cómo se supone que deben verse. ¿Hay algún otro archivo que establezca los colores que me faltan?
jmathew

Creo que si hablamos de X11, .Xdefaults y .Xresources son los únicos archivos involucrados (los anteriores han quedado en desuso en los sistemas Archlinux). Por supuesto, los colores de terminal predeterminados tienen que vivir en algún lugar y pueden ser diferentes dadas las diversas distribuciones de Linux. Además, no podemos olvidar que los emuladores de terminal como Gnome Terminal pueden tener colores personalizados o usar los del sistema, ya que no podemos saber con certeza si el creador del tema usó colores personalizados o no, aunque es muy plausible. Cualquier fenómeno que, como yo, haya creado un tema vim, seguramente tiene sus colores terminales personalizados.
Alex

0

intenta poner:

export TERM=xterm-256color

en tu bashrc.

Eso debería arreglarlo ...


2
Exportar un valor de $ TERM en su .bashrcrara vez "arregla" algo; es más probable que resulte en otros problemas no deseados ...
jasonwryan
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.