Como obter o VIM para exibir 256 cores corretamente

17

Estou tentando obter 256 arquivos de tema de cores para trabalhar com o VIM no xterm.

Esta é peaksea como ele olha para mim:

insira a descrição da imagem aqui

Como deve ficar: como deveria parecer

Eu tentei seguir as dicas na página wiki sem sucesso.

set t_Co=256 funciona bem, mas

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

resulta nas seqüências de escape exibidas no terminal:

EDIT: Mikel estava certo, eu precisava digitar Ctrl + v + Esc para inserir o ^ [corretamente. No entanto, isso não resolveu o meu problema.

insira a descrição da imagem aqui

Então, que outras mudanças posso tentar fazer com que isso funcione?

informação 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

.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: Tentativas de soluções

Eu já instalei o rxvt-unicode e estava usando isso anteriormente. No entanto, eu tive o mesmo problema. Aqui está uma comparação lado a lado dos dois. À esquerda é xterm e à direita é urxvt. O arquivo aberto é o .Xdefaults, que mostra as configurações do urxvt, uma das quais pode ser o problema?

xterm esquerda urxvt direita

Também executei o script de teste de cores com resultados aparentemente positivos. O topo é o fundo xterm é urxvt. urxvt superior do fundo xterm

$ echo $TERM
xterm-256color

Solução alternativa

Agora estou usando CSApprox e parece funcionar bem o suficiente. Ainda estou confuso sobre o motivo pelo qual o tema não funciona, embora tenha as configurações de cores apropriadas do console definidas. Talvez tenha algo a ver com a maneira como o vim se considera. Ele foi instalado como parte do pacote gvim para poder ignorar as configurações do cterm.

EDIT: E agora tudo parece estar bem ..

Estranhamente depois de instalar o CSApprox e removê-lo, tudo parece funcionar como deveria. Apenas baixei outro esquema de cores e ele carregou perfeitamente, mesmo sem o módulo CSApprox em execução.

jmathew
fonte
Qual é o seu $ TERM? O vim sabe que pode usar 256 cores?
Richard Hum
1
O xterm é bastante problemático com UTF8 e cores e coisas assim. Você já pensou em usar urxvte salvar a si mesmo da confusão? ( pacman -S rxvt-unicode)
Caleb
1
Como você digitou ^[? Você precisa fazer isso usando Ctrl + V + Esc.
Mikel
@Mikel você estava certo sobre isso, mas ele parece não ter feito a diferença
jmathew
@Caleb Que problemas você quer dizer? Na verdade, mudei de rxvt para xterm para obter melhor suporte UTF-8 e 256 cores funcionam em ambos. Eu uso TERM=screen-256colordevido ao tmux, porém, mas as coisas também funcionam com o xterm-256colortmux externo.
jw013

Respostas:

3

Caleb está certo em seu comentário. O xterm é bastante antigo e você deve considerar mudar para o urxvt - pelo menos as versões ativada para 256 e utf-8, consulte o seu gerenciador de pacotes para instalar a correta.

Eu tenho uma configuração idêntica à sua - impressionante WM, vim, urxvt, tmux / screen - e todas elas funcionam bem com 256 cores e utf-8. Eu configurei TERM para xterm-256colorno caso de você precisar configurá-lo manualmente.

Hum ... Após a sua edição, você pode verificar se o tema da cor vim está definido corretamente para os terminais?

Sardathrion - Restabelecer Monica
fonte
não tenho certeza do que você quer dizer exatamente. O peaksea.vim usa ctermfg / ctermbg, mas também possui funções de gui. Isso poderia interferir?
precisa saber é o seguinte
Você poderia tentar com um esquema de cores diferente? Não espero que isso faça uma grande diferença, mas você nunca sabe. A outra coisa em que consigo pensar é recompilar o vim a partir da origem, forçando 256 cores por padrão. Talvez o pacote em arco é estranho ...
Sardathrion - Reintegrar Monica
1

Não é apenas que o seu terminal deve suportar 256 cores, o tema no vim se referirá às cores nos seus arquivos .Xdefaults / .Xresources. Para corrigir isso, você deve usar as mesmas cores que o autor do tema ou usar o gvim.

Observando o código, vejo que ele suporta o gvim corretamente, é por isso que o CSAprox funciona, pois ele pega os códigos de cores do gvim no HEX (por exemplo: # 123ABC) e os traduz para as cores dos terminais, eu acho.

Exemplo

O Vim no modo console usará as cores de:

hi Normal ctermfg=16 ctermbg=254

enquanto estiver no modo gráfico:

hi Normal guifg=#d0d0d0 guibg=#202020

Portanto, se você instalou algum tipo de "tema" para as cores do terminal, isso afetaria as cores obtidas no Vim. Além disso, verifique se você possui

set background=dark

no seu .vimrc

Alex
fonte
Sim, eu entendo que cterm é o que ele usa quando está no console. O problema é que não tenho um arquivo .Xresources e nada nos meus .Xdefaults que define outra cor, que pode ser um primeiro plano e um plano de fundo. Nenhuma das cores é redefinida. A única coisa que eu poderia imaginar é se o autor tivesse um .Xdefaults / .Xresources definido que diferisse dos padrões. Mas parece que todo tema termial de 256 cores que eu uso varia significativamente do que eles deveriam ter. Existe algum outro arquivo que define as cores que estão faltando?
precisa saber é
Penso que, se falarmos sobre o X11, .Xdefaults e .Xresources são os únicos arquivos envolvidos (o primeiro foi descontinuado nos sistemas Archlinux). Obviamente, as cores padrão dos terminais precisam viver em algum lugar e podem ser diferentes, dadas as várias distribuições linux. Além disso, não podemos esquecer que os emuladores de terminal como o Gnome Terminal podem ter cores personalizadas ou usar o sistema, pois não sabemos ao certo se o criador do tema usou cores personalizadas ou não, embora seja muito plausível. Qualquer aberração que, como eu, já tenha criado um tema vim, certamente tem suas cores terminais personalizadas.
21312 Alex
0

tente colocar:

export TERM=xterm-256color

no seu bashrc.

Isso deve corrigi-lo ...

phildobbin
fonte
2
Exportar um valor de $ TERM em seu .bashrcraramente "corrige" qualquer coisa; é mais provável para resultar em outros problemas não intencionais ...
jasonwryan