So bringen Sie VIM dazu, 256 Farben korrekt anzuzeigen

17

Ich versuche, 256 Farbthemadateien für die Arbeit mit VIM unter xterm zu bekommen.

So sieht Peaksea für mich aus:

Bildbeschreibung hier eingeben

Wie es aussehen soll: wie es aussehen soll

Ich habe versucht, die Tipps auf der Wiki-Seite ohne Erfolg zu befolgen.

set t_Co=256 funktioniert aber prima

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

führt dazu, dass die Escape-Sequenzen auf dem Terminal angezeigt werden:

EDIT: Mikel hatte recht, ich musste Strg + v + Esc eingeben, um das ^ [richtig einzugeben. Das hat mein Problem jedoch nicht behoben.

Bildbeschreibung hier eingeben

Welche anderen Änderungen kann ich versuchen, damit dies funktioniert?

zusätzliche Information

$ 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: Versuchte Lösungen

Ich habe rxvt-unicode bereits installiert und habe es zuvor verwendet. Ich hatte jedoch das gleiche Problem. Hier ist ein Vergleich der beiden nebeneinander. Links ist xterm und rechts ist urxvt. Die geöffnete Datei ist die .Xdefaults-Datei, die die Einstellungen für urxvt anzeigt. Woran könnte das Problem liegen?

xterm left urxvt right

Ich habe auch das Farbtestskript mit scheinbar positiver Ausgabe ausgeführt. Oben ist xterm unten ist urxvt. top xterm bottom urxvt

$ echo $TERM
xterm-256color

Umgehungslösung

Ich benutze jetzt CSApprox und es scheint gut genug zu funktionieren. Was mich immer noch verwirrt, ist, warum das Thema nicht funktioniert, obwohl die entsprechenden Einstellungen für die Konsolenfarbe definiert sind. Vielleicht hat es etwas damit zu tun, wie vim sich selbst betrachtet. Es wurde als Teil des gvim-Pakets installiert, sodass die cterm-Einstellungen möglicherweise ignoriert werden.

EDIT: Und jetzt scheint alles in Ordnung zu sein ..

Seltsamerweise scheint nach der Installation von CSApprox und dem Entfernen alles so zu funktionieren, wie es sollte. Habe gerade ein anderes Farbschema heruntergeladen und es perfekt geladen, auch ohne dass das CSApprox-Modul läuft.

jmathew
quelle
Was ist dein $ TERM? Weiß vim, dass 256 Farben verwendet werden können?
Richard Hum
1
xterm ist mit UTF8 und Farben und so ziemlich problematisch. Haben Sie darüber nachgedacht, urxvtdie Hastle zu nutzen und sich zu sparen? ( pacman -S rxvt-unicode).
Caleb
1
Wie hast du getippt ^[? Sie müssen dazu Strg + V + Esc verwenden.
Mikel
@ Mikel Sie hatten Recht, aber es scheint keinen Unterschied gemacht zu haben
jmathew
@Caleb Welche Probleme meinst du? Ich habe tatsächlich von RXVT auf XTM umgestellt, um die UTF-8-Unterstützung zu verbessern. In beiden Fällen funktionieren 256 Farben. Ich benutze zwar TERM=screen-256coloraufgrund von tmux, aber die Dinge funktionieren auch mit xterm-256coloraußerhalb von tmux.
jw013

Antworten:

3

Caleb hat in seinem Kommentar Recht. xterm ist ziemlich alt und Sie sollten in Betracht ziehen, auf urxvt umzusteigen. Wenden Sie sich mindestens an Ihren Paketmanager, um die richtige Version zu installieren.

Ich habe ein identisches Setup für Sie - fantastisches WM, VIM, URXVT, TMUX / SCREEN - und sie funktionieren alle gut mit 256 Farben und UTF-8. Ich habe TERM auf eingestellt, xterm-256colorfalls Sie dies manuell einstellen müssen.

Hum ... Können Sie nach der Bearbeitung überprüfen, ob das VIM-Farbschema für Terminals richtig definiert ist?

Sardathrion - Setzen Sie Monica wieder ein
quelle
nicht sicher, was du genau meinst. peaksea.vim verwendet ctermfg / ctermbg, es sind jedoch auch GUI-Funktionen definiert. Könnte das stören?
Jmathew
Könnten Sie es mit einem anderen Farbschema versuchen? Ich erwarte nicht, dass dies einen großen Unterschied macht, aber Sie wissen es nie. Die andere Sache, an die ich denken kann, ist, vim von der Quelle neu zu kompilieren, die standardmäßig 256 Farbe erzwingt. Vielleicht ist das Paket in Bogen seltsam ...
Sardathrion - Wiedereinsetzung Monica
1

Ihr Terminal sollte nicht nur 256 Farben unterstützen, das Thema in vim bezieht sich auch auf die Farben in Ihren .Xdefaults / .Xresources. Um dies zu beheben, sollten Sie die gleichen Farben wie der Autor des Themas verwenden oder stattdessen gvim verwenden.

Wenn ich mir den Code ansehe, kann ich sehen, dass er gvim richtig unterstützt. Deshalb funktioniert die Verwendung von CSAprox, da gvim-Farbcodes in HEX (z. B .: # 123ABC) verwendet und in die Farben Ihres Terminals übersetzt werden, denke ich.

Beispiel

Vim im Konsolenmodus erhält die Farben von:

hi Normal ctermfg=16 ctermbg=254

im Grafikmodus:

hi Normal guifg=#d0d0d0 guibg=#202020

Wenn Sie also eine Art "Theme" für Ihre Terminalfarben installiert haben, wirkt sich dies auf die Farben aus, die Sie in Vim erhalten. Überprüfen Sie auch, dass Sie haben

set background=dark

in Ihrer .vimrc

Alex
quelle
Ja, ich verstehe, dass cterm das ist, was es in der Konsole verwendet. Die Sache ist, dass ich keine .Xresources-Datei und nichts in meinen .X-Standardeinstellungen habe, das andere Farben als Vordergrund und Hintergrund festlegt. Keine der Farben ist neu definiert. Das einzige, was ich mir vorstellen könnte, wäre, wenn der Autor eine .Xdefaults / .Xresources definiert hätte, die von den Standardeinstellungen abweicht. Aber es scheint, dass jedes von mir verwendete Terminthema mit 256 Farben erheblich von dem abweicht, wie es aussehen soll. Gibt es eine andere Datei, die die Farben festlegt, die mir fehlen?
Jmathew
Ich denke, wenn wir über X11 sprechen, sind .Xdefaults und .Xresources die einzigen Dateien, die betroffen sind (die zuvor in Archlinux-Systemen veraltet waren). Natürlich müssen die Standardfarben des Terminals an einem bestimmten Ort vorhanden sein und können bei verschiedenen Linux-Distributionen unterschiedlich sein. Wir können auch nicht vergessen, dass Terminalemulatoren wie Gnome Terminal benutzerdefinierte Farben haben oder die des Systems verwenden können, da wir nicht sicher wissen können, ob der Ersteller des Themas benutzerdefinierte Farben verwendet hat oder nicht, obwohl dies sehr plausibel ist. Jeder Freak, der, wie ich, jemals ein Vim-Thema gemacht hat, hat sicher seine Terminalfarben angepasst.
Alex
0

versuche es mit:

export TERM=xterm-256color

in deinem bashrc.

Das sollte es beheben ...

phildobbin
quelle
2
Das Exportieren eines $ TERM-Werts in Ihre .bashrcselten "behebt" irgendetwas; Es ist wahrscheinlicher, dass es zu anderen unbeabsichtigten Problemen kommt ...
jasonwryan