Cara mendapatkan VIM untuk menampilkan 256 warna dengan benar

17

Saya mencoba untuk mendapatkan 256 file tema warna untuk bekerja dengan VIM di bawah xterm.

Ini adalah puncak dari penampilan saya:

masukkan deskripsi gambar di sini

Bagaimana seharusnya terlihat: bagaimana seharusnya terlihat

Saya sudah mencoba mengikuti tips pada halaman wiki tetapi tidak berhasil.

set t_Co=256 berfungsi dengan baik tetapi

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

menghasilkan urutan pelarian yang ditampilkan di terminal:

EDIT: Mikel benar, saya harus mengetikkan Ctrl + v + Esc untuk memasukkan ^ [dengan benar. Namun, itu belum menyelesaikan masalah saya.

masukkan deskripsi gambar di sini

Jadi perubahan apa yang bisa saya coba untuk membuat ini berfungsi?

informasi tambahan

$ 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: Solusi yang dicoba

Saya sudah menginstal rxvt-unicode dan sudah menggunakannya sebelumnya. Namun saya memiliki masalah yang sama. Berikut ini adalah perbandingan keduanya. Di sebelah kiri adalah xterm dan di sebelah kanan adalah urxvt. File yang terbuka adalah .Xdefaults yang menunjukkan pengaturan untuk urxvt yang salah satunya mungkin masalah?

xterm kiri urxvt kanan

Saya juga menjalankan skrip tes warna dengan output yang tampaknya positif. Atas adalah xterm bawah adalah urxvt. top xterm urxvt bawah

$ echo $TERM
xterm-256color

Solusi pemecahan masalah

Saya sekarang menggunakan CSApprox dan sepertinya berfungsi cukup baik. Yang saya masih bingung adalah mengapa tema tersebut tidak berfungsi meskipun pengaturan warna konsol yang sesuai telah ditentukan. Mungkin itu ada hubungannya dengan cara vim menganggap dirinya. Itu diinstal sebagai bagian dari paket gvim sehingga bisa mengabaikan pengaturan cterm.

EDIT: Dan sekarang semuanya tampak baik-baik saja ..

Anehnya setelah menginstal CSApprox kemudian menghapusnya, semuanya tampaknya berfungsi sebagaimana mestinya. Baru saja mengunduh skema warna lain dan dimuat dengan sempurna bahkan tanpa menjalankan modul CSApprox.

jathath
sumber
Berapa $ TERM Anda? Apakah vim tahu bahwa ia dapat menggunakan 256 warna?
Richard Hum
1
xterm cukup bermasalah dengan UTF8 dan warna dan semacamnya. Sudahkah Anda mempertimbangkan untuk menggunakan urxvtdan menyelamatkan diri sendiri dari terburu-buru? ( pacman -S rxvt-unicode).
Caleb
1
Bagaimana Anda mengetik ^[? Anda perlu melakukannya menggunakan Ctrl + V + Esc.
Mikel
@Mikel Anda benar tentang itu tetapi tampaknya belum membuat perbedaan
jmathew
@ Caleb Apa masalah yang Anda maksud? Saya benar-benar beralih dari rxvt ke xterm untuk dukungan UTF-8 yang lebih baik dan 256 warna berfungsi baik untuk saya. Saya menggunakan TERM=screen-256colorkarena tmux, tetapi hal-hal juga bekerja dengan xterm-256colorluar tmux.
jw013

Jawaban:

3

Caleb benar dalam komentarnya. xterm sudah cukup tua dan Anda harus mempertimbangkan beralih ke urxvt - setidaknya versi 256 dan utf-8 yang diaktifkan, lihat manajer paket Anda untuk menginstal yang benar.

Saya memiliki set yang identik dengan Anda - WM yang mengagumkan, vim, urxvt, tmux / layar - dan semuanya bekerja dengan baik dengan 256 warna dan utf-8. Saya telah menetapkan TERM untuk xterm-256colorjika Anda perlu mengatur ini secara manual.

Hum ... Setelah diedit, dapatkah Anda memeriksa apakah tema warna vim ditentukan dengan benar untuk terminal?

Sardathrion - Pasang kembali Monica
sumber
tidak yakin apa yang Anda maksud persis. peaksea.vim menggunakan ctermfg / ctermbg tetapi memang memiliki fungsi gui yang didefinisikan juga. Mungkinkah itu mengganggu?
jmathew
Bisakah Anda mencoba dengan skema warna yang berbeda? Saya tidak mengharapkan ini membuat perbedaan besar tetapi Anda tidak pernah tahu. Hal lain yang dapat saya pikirkan adalah mengkompilasi ulang vim dari sumber yang memaksa 256 warna secara default. Mungkin paket di lengkungan itu aneh ...
Sardathrion - Reinstate Monica
1

Bukan saja terminal Anda harus mendukung 256 warna, tema dalam vim akan merujuk pada warna di .Xdefaults / .Xresources Anda. Untuk memperbaikinya, Anda harus menggunakan warna yang sama dengan pembuat tema atau menggunakan gvim.

Mengintip kode saya dapat melihat bahwa ia mendukung gvim dengan benar, itu sebabnya menggunakan CSAprox berfungsi, karena mengambil kode warna gvim di HEX (mis .: # 123ABC) dan menerjemahkannya ke warna terminal Anda, saya pikir.

Contoh

Vim dalam mode konsol akan mengambil warna dari:

hi Normal ctermfg=16 ctermbg=254

saat dalam mode grafis:

hi Normal guifg=#d0d0d0 guibg=#202020

Jadi, jika Anda memasang semacam "tema" untuk warna terminal Anda, itu akan mempengaruhi warna yang Anda dapatkan di Vim. Juga, periksa kembali yang Anda miliki

set background=dark

di .vimrc Anda

Alex
sumber
Yap saya mendapatkan cterm yang digunakan saat di konsol. Masalahnya adalah saya tidak punya file .Xresources dan tidak ada dalam file .Xdefault saya yang mengatur warna selain mungkin menjadi latar depan dan latar belakang. Tidak ada warna yang didefinisikan ulang. Satu-satunya hal yang dapat saya bayangkan adalah jika penulis memiliki .Xdefaults / .Xresources didefinisikan yang berbeda dari default. Tetapi tampaknya setiap tema termial 256 warna yang saya gunakan bervariasi secara signifikan dari apa yang seharusnya terlihat. Apakah ada file lain yang membuat warna saya hilang?
jmathew
Saya pikir jika kita berbicara tentang X11, .Xdefaults dan .Xresources adalah satu-satunya file yang terlibat (yang sebelumnya sudah usang dalam sistem Archlinux). Tentu saja, warna terminal default harus hidup di suatu tempat dan mungkin berbeda karena berbagai distribusi linux. Juga, kita tidak dapat melupakan bahwa emulator terminal seperti Terminal Gnome dapat memiliki warna khusus atau menggunakan sistem, karena kita tidak dapat mengetahui dengan pasti apakah pembuat tema menggunakan warna khusus atau tidak, meskipun sangat masuk akal. Orang aneh yang, seperti saya, pernah membuat tema vim, tentu memiliki warna terminal mereka disesuaikan.
Alex
0

coba pasang:

export TERM=xterm-256color

di bashrc Anda.

Itu harus memperbaikinya ...

phildobbin
sumber
2
Mengekspor nilai $ JANGKA dalam sesuatu yang .bashrcjarang "memperbaiki" Anda; itu lebih cenderung menghasilkan masalah yang tidak diinginkan lainnya ...
jasonwryan