Come ottenere VIM per visualizzare correttamente 256 colori


17

Sto cercando di far funzionare 256 file di temi a colori con VIM in xterm.

Questo è Peaksea come mi sembra:

inserisci qui la descrizione dell'immagine

Come dovrebbe apparire: come dovrebbe apparire

Ho provato a seguire i suggerimenti sulla pagina wiki senza alcun risultato.

set t_Co=256 funziona bene ma

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

provoca la visualizzazione delle sequenze di escape sul terminale:

EDIT: Mikel aveva ragione, avevo bisogno di digitare Ctrl + v + Esc per inserire ^ [correttamente. Tuttavia, ciò non ha risolto il mio problema.

inserisci qui la descrizione dell'immagine

Quindi quali altri cambiamenti posso provare a far funzionare questo?

informazioni addizionali

$ 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: soluzioni tentate

Ho già installato rxvt-unicode e lo usavo in precedenza. Tuttavia ho avuto lo stesso problema. Ecco un confronto fianco a fianco dei due. A sinistra è xterm e a destra è urxvt. Il file aperto è .Xdefaults che mostra le impostazioni di urxvt, una delle quali potrebbe essere il problema?

xterm left urxvt right

Ho anche eseguito lo script di test del colore con risultati apparentemente positivi. Top is xterm bottom is urxvt. top xterm bottom urxvt

$ echo $TERM
xterm-256color

Soluzione alternativa

Ora sto usando CSApprox e sembra funzionare abbastanza bene. Ciò di cui sono ancora confuso è perché il tema non funziona anche se ha le impostazioni di colore della console appropriate definite. Forse ha qualcosa a che fare con il modo in cui vim si considera. È stato installato come parte del pacchetto gvim, quindi potrebbe ignorare le impostazioni di cterm.

EDIT: E ora tutto sembra andare bene ..

Stranamente dopo aver installato CSApprox e averlo rimosso, tutto sembra funzionare come dovrebbe. Ho appena scaricato un altro colorito e si è caricato perfettamente anche senza il modulo CSApprox in esecuzione.


Qual è il tuo $ TERM? Vim sa che può usare 256 colori?
Richard Hum,

1
xterm è abbastanza problematico con UTF8 e colori e simili. Hai mai pensato di utilizzare urxvte salvare te stesso la fretta? ( pacman -S rxvt-unicode).
Caleb,

1
Come hai digitato ^[? Devi farlo usando Ctrl + V + Esc.
Mikel,

@Mikel avevi ragione, ma sembra che non abbia fatto differenza
jmathew

@Caleb Quali problemi intendi? In realtà sono passato da rxvt a xterm per un migliore supporto UTF-8 e 256 colori funzionano in entrambi per me. Uso però a TERM=screen-256colorcausa di tmux, ma le cose funzionano anche con xterm-256colortmux esterno.
jw013

Risposte:


3

Caleb ha ragione nel suo commento. xterm è piuttosto vecchio e dovresti considerare di passare a urxvt - almeno la versione abilitata per 256 e utf-8, fai riferimento al gestore dei pacchetti per installare quello giusto.

Ho una configurazione identica alla tua - WM, vim, urxvt, tmux / screen fantastici - e funzionano tutti bene con 256 colori e utf-8. Ho impostato TERM su xterm-256colornel caso sia necessario impostarlo manualmente.

Hum ... Dopo la modifica, puoi verificare se il tema del colore vim è definito correttamente per i terminali?


non sono sicuro di cosa intendi esattamente. peaksea.vim usa ctermfg / ctermbg ma ha anche funzioni gui definite. Potrebbe interferire?
jmathew,

Potresti provare con una combinazione di colori diversa? Non mi aspetto che questo faccia una grande differenza, ma non lo saprai mai. L'altra cosa a cui riesco a pensare è di ricompilare vim dalla sorgente forzando 256 colori di default. Forse il pacchetto in arch è strano ...
Sardathrion - Reinstalla Monica il

1

Non è solo che il tuo terminale dovrebbe supportare 256 colori, il tema in vim farà riferimento ai colori nelle tue .Xdefaults / .Xresources. Per risolvere questo problema, dovresti usare gli stessi colori dell'autore del tema o usare gvim.

Dando un'occhiata al codice posso vedere che supporta correttamente gvim, ecco perché l'uso di CSAprox funziona, poiché prende i codici colore di gvim in HEX (ad esempio: # 123ABC) e li traduce nei colori del terminale, credo.

Esempio

Vim in modalità console prenderà i colori da:

hi Normal ctermfg=16 ctermbg=254

in modalità grafica:

hi Normal guifg=#d0d0d0 guibg=#202020

Quindi, se hai installato una sorta di "tema" per i colori del tuo terminale, ciò influenzerebbe i colori che ottieni in Vim. Inoltre, ricontrolla che hai

set background=dark

nel tuo .vimrc


Sì, ho capito che cterm è quello che usa quando è in console. Il fatto è che non ho un file .Xresources e niente nel mio .Xdefaults che imposta il colore in modo che sia un primo piano e uno sfondo. Nessuno dei colori viene ridefinito. L'unica cosa che potrei immaginare è se l'autore avesse definito .Xdefaults / .Xresources che differivano dalle impostazioni predefinite. Ma sembra che ogni tema a 256 colori che uso varia in modo significativo da come dovrebbero apparire. C'è qualche altro file che imposta i colori che mi manca?
jmathew,

Penso che se parliamo di X11, .Xdefaults e .Xresources sono gli unici file coinvolti (è stato il precedente deprecato nei sistemi Archlinux). Ovviamente, i colori dei terminali predefiniti devono vivere in qualche posto e potrebbero essere diversi date le varie distribuzioni di Linux. Inoltre, non possiamo dimenticare che gli emulatori di terminale come Gnome Terminal possono avere colori personalizzati o utilizzare quelli del sistema, poiché non possiamo sapere con certezza se il creatore del tema abbia usato colori personalizzati o meno, sebbene sia molto plausibile. Qualsiasi mostro che, come me, abbia mai creato un tema vim, ha sicuramente i suoi colori terminali personalizzati.
Alex,

0

prova a mettere:

export TERM=xterm-256color

nel tuo bashrc.

Questo dovrebbe risolverlo ...


2
Esportare un valore $ TERM nelle tue .bashrc"correzioni" raramente; è più probabile che provochi altri problemi non intenzionali ...
Jasonwryan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.