Comment faire pour que VIM affiche correctement 256 couleurs

17

J'essaie d'obtenir 256 fichiers de thème de couleur pour travailler avec VIM sous xterm.

C'est peaksea quoi il ressemble pour moi:

entrez la description de l'image ici

À quoi cela devrait ressembler: à quoi cela devrait ressembler

J'ai essayé de suivre les conseils de la page wiki en vain.

set t_Co=256 fonctionne bien mais

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

entraîne l'affichage des séquences d'échappement sur le terminal:

EDIT: Mikel avait raison, j'avais besoin de taper Ctrl + v + Esc pour saisir le ^ [correctement. Cependant, cela n'a pas résolu mon problème.

entrez la description de l'image ici

Alors, quels autres changements puis-je essayer pour que cela fonctionne?

information additionnelle

$ 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

.Xdefault

!--------------------- 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

EDIT: Solutions tentées

J'ai déjà installé rxvt-unicode et l'utilisais auparavant. Cependant, j'ai eu le même problème. Voici une comparaison côte à côte des deux. A gauche, xterm et à droite, urxvt. Le fichier ouvert est le .Xdefaults qui montre les paramètres pour urxvt dont l'un pourrait être le problème?

xterm gauche urxvt droite

J'ai également exécuté le script de test des couleurs avec une sortie apparemment positive. Le haut est xterm le bas est urxvt. haut xterm bas urxvt

$ echo $TERM
xterm-256color

Solution de contournement

J'utilise maintenant CSApprox et cela semble fonctionner assez bien. Ce qui m'embrouille toujours, c'est pourquoi le thème ne fonctionne pas même s'il a défini les paramètres de couleur de console appropriés. Cela a peut-être quelque chose à voir avec la façon dont vim se considère. Il a été installé dans le cadre du package gvim afin qu'il puisse ignorer les paramètres cterm.

EDIT: Et maintenant tout semble aller bien ..

Étrangement après l'installation de CSApprox puis sa suppression, tout semble fonctionner comme il se doit. Je viens de télécharger un autre schéma de couleurs et il s'est parfaitement chargé même sans le module CSApprox en cours d'exécution.

jmathew
la source
Quel est votre $ TERM? Vim sait-il qu'il peut utiliser 256 couleurs?
Richard Hum
1
xterm est assez problématique avec UTF8 et les couleurs et autres. Avez-vous urxvtsongé à utiliser et à vous épargner le problème? ( pacman -S rxvt-unicode).
Caleb
1
Comment avez-vous tapé ^[? Vous devez le faire en utilisant Ctrl + V + Esc.
Mikel
@Mikel vous aviez raison à ce sujet mais cela ne semble pas avoir fait de différence
jmathew
@Caleb Quels problèmes voulez-vous dire? En fait, je suis passé de rxvt à xterm pour un meilleur support UTF-8 et 256 couleurs fonctionnent pour moi. J'utilise en TERM=screen-256colorraison de tmux, mais les choses fonctionnent également avec l' xterm-256colorextérieur de tmux.
jw013

Réponses:

3

Caleb a raison dans son commentaire. xterm est assez ancien et vous devriez envisager de passer à urxvt - au moins la version 256 et utf-8, consultez votre gestionnaire de paquets pour installer la bonne.

J'ai une configuration identique à la vôtre - WM génial, vim, urxvt, tmux / screen - et ils fonctionnent tous bien avec 256 couleurs et utf-8. J'ai défini TERM sur xterm-256colorau cas où vous auriez besoin de le régler manuellement.

Hum ... Après votre édition, pouvez-vous vérifier si le thème de couleur vim est correctement défini pour les terminaux?

Sardathrion - Rétablir Monica
la source
Je ne sais pas exactement ce que tu veux dire. peaksea.vim utilise ctermfg / ctermbg mais il a également des fonctions gui définies. Cela pourrait-il interférer?
jmathew
Pourriez-vous essayer avec un jeu de couleurs différent? Je ne m'attends pas à ce que cela fasse une grande différence, mais on ne sait jamais. L'autre chose à laquelle je peux penser est de recompiler vim à partir de la source en forçant 256 couleurs par défaut. Peut-être que le paquet dans arch est étrange ...
Sardathrion - Rétablir Monica
1

Ce n'est pas seulement que votre terminal doit prendre en charge 256 couleurs, le thème dans vim fera référence aux couleurs de vos .Xdefaults / .Xresources. Pour résoudre ce problème, vous devez utiliser les mêmes couleurs que l'auteur du thème ou utiliser gvim à la place.

En jetant un œil au code, je peux voir qu'il prend correctement en charge gvim, c'est pourquoi l'utilisation de CSAprox fonctionne, car il prend les codes de couleur gvim en HEX (par exemple: # 123ABC) et les traduit dans les couleurs de votre terminal, je pense.

Exemple

Vim en mode console prendra les couleurs de:

hi Normal ctermfg=16 ctermbg=254

en mode graphique:

hi Normal guifg=#d0d0d0 guibg=#202020

Donc, si vous avez installé une sorte de "thème" pour les couleurs de votre terminal, cela affecterait les couleurs que vous obtenez dans Vim. Vérifiez également que vous avez

set background=dark

dans votre .vimrc

Alex
la source
Oui, je comprends que cterm est ce qu'il utilise lorsqu'il est dans la console. Le fait est que je n'ai pas de fichier .Xresources et rien dans mon .Xdefaults qui définit une couleur autre que le premier plan et l'arrière-plan. Aucune des couleurs n'est redéfinie. La seule chose que je pouvais imaginer, c'est si l'auteur avait défini un .Xdefaults / .Xresources différent des valeurs par défaut. Mais il semble que chaque thème de terminale de 256 couleurs que j'utilise varie considérablement de ce à quoi il devrait ressembler. Y a-t-il un autre fichier qui définit les couleurs qui me manquent?
jmathew
Je pense que si nous parlons de X11, .Xdefaults et .Xresources sont les seuls fichiers impliqués (été l'ancien obsolète dans les systèmes Archlinux). Bien sûr, les couleurs de terminal par défaut doivent vivre à un certain endroit et peuvent être différentes compte tenu des diverses distributions Linux. De plus, nous ne pouvons pas oublier que les émulateurs de terminaux comme Gnome Terminal peuvent avoir des couleurs personnalisées ou utiliser celles du système, car nous ne pouvons pas savoir avec certitude si le créateur du thème a utilisé des couleurs personnalisées ou non, bien que ce soit très plausible. Tout monstre qui, comme moi, a déjà créé un thème Vim, a certainement ses couleurs de terminal personnalisées.
Alex
0

essayez de mettre:

export TERM=xterm-256color

dans votre bashrc.

Cela devrait le réparer ...

phildobbin
la source
2
Exporter une valeur $ TERM dans vos éléments .bashrcrarement "corrigés"; il est plus susceptible d'entraîner d'autres problèmes involontaires ...
jasonwryan