Як заставити VIM правильно відображати 256 кольорів


17

Я намагаюся змусити 256 кольорових файлів тем для роботи з VIM під xterm.

Це піксей, як це виглядає на мене:

введіть тут опис зображення

Як це має виглядати: як це має виглядати

Я намагався виконувати поради на сторінці вікі, але безрезультатно.

set t_Co=256 працює добре, але

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

приводить до того, що послідовності відведення відображаються на терміналі:

EDIT: Mikel мала рацію, мені потрібно було набрати Ctrl + v + Esc, щоб правильно ввести ^ [. Однак це не вирішило моєї проблеми.

введіть тут опис зображення

Отже, які ще зміни я можу спробувати зробити цю роботу?

додаткова інформація

$ 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: Спроби рішення

Я вже встановив rxvt-unicode і використовував це раніше. Однак у мене була така ж проблема. Ось побічне порівняння двох. Зліва - xterm, а праворуч - urxvt. Відкритим файлом є .Xdefaults, який показує параметри urxvt, один з яких може бути проблемою?

xterm зліва urxvt праворуч

Я також запустив сценарій кольорового тесту з здавалося б позитивним результатом. Зверху xterm, знизу - urxvt. верхній xterm нижній urxvt

$ echo $TERM
xterm-256color

Рішення для вирішення проблеми

Зараз я використовую CSApprox, і, здається, він працює досить добре. Я все ще плутаю те, чому тема не працює, навіть якщо визначені відповідні налаштування кольору консолі. Можливо, це має щось спільне з тим, як себе вважає vim. Він був встановлений як частина пакету gvim, тому він міг ігнорувати налаштування cterm.

EDIT: А тепер все, здається, добре ...

Як не дивно після встановлення CSApprox та видалення його, схоже, все працює як слід. Щойно завантажили іншу схему кольорів, і вона завантажилася ідеально навіть без модуля CSApprox.


Який ваш $ TERM? Чи знає vim, що він може використовувати 256 кольорів?
Річард Хам

1
xterm досить проблематичний з UTF8 та кольорами тощо. Чи розглядали ви, як використати urxvtі врятувати себе хастле? ( pacman -S rxvt-unicode).
Калеб

1
Як ви ввели текст ^[? Це потрібно зробити за допомогою Ctrl + V + Esc.
Мікель

@Mikel ви мали рацію з цього питання, але, схоже, нічого не змінили
jmathew

@Caleb Які проблеми ти маєш на увазі? Я фактично перейшов з rxvt на xterm для кращої підтримки UTF-8 і 256 кольорів працює для мене. Я використовую TERM=screen-256colorзавдяки tmux, але все також працює із xterm-256colorзовнішнім tmux.
jw013

Відповіді:


3

Калеб прав у своєму коментарі. xterm досить старий, і вам слід розглянути можливість переходу на urxvt - принаймні версія з підтримкою 256 та utf-8, зверніться до менеджера пакунків, щоб встановити потрібну.

У мене ідентичний набір - ваш дивовижний WM, vim, urxvt, tmux / screen - і всі вони добре працюють з 256 кольорами та utf-8. Я встановив TERM на xterm-256colorвипадок, якщо вам потрібно встановити це вручну.

Гум ... Після редагування ви можете перевірити, чи правильно визначена тема кольорів vim для терміналів?


не впевнений, що саме ти маєш на увазі. peaksea.vim використовує ctermfg / ctermbg, але він також визначає функції gui. Чи може це заважати?
jmathew

Чи можете ви спробувати з іншою кольоровою гамою? Я не очікую, що це призведе до значних змін, але ви ніколи не знаєте. Інше, що я можу придумати, - це перекомпілювати vim з джерела, форсуючи 256 кольорів за замовчуванням. Можливо, пакет в арці є дивним ...
Сардатріон - Відновіть Моніку

1

Мало того, що ваш термінал повинен підтримувати 256 кольорів, тема in vim буде стосуватися кольорів у ваших .Xdefaults / .Xresources. Щоб виправити це, слід використовувати ті ж кольори, що й автор теми, або використовувати gvim замість цього.

Заглянувши до коду, я бачу, що він належним чином підтримує gvim, тому використання CSAprox працює, оскільки він приймає кольори кольорів gvim у HEX (наприклад: # 123ABC) та переводить їх у свої термінальні кольори.

Приклад

Vim в консольному режимі буде приймати кольори з:

hi Normal ctermfg=16 ctermbg=254

перебуваючи в графічному режимі:

hi Normal guifg=#d0d0d0 guibg=#202020

Отже, якщо ви встановили якусь "тему" для своїх термінальних кольорів, це вплине на кольори, отримані у Vim. Також двічі перевірте, що у вас є

set background=dark

у вашому .vimrc


Так, я розумію, що це cterm - це те, що він використовується, коли в консолі. Річ у тім, що у мене немає .Xresources-файлу, і нічого в моїх .Xdefaults, що встановлює кольори інших thm, можливо, передній план і фон. Жоден з кольорів не переосмислений. Єдине, що я міг собі уявити, - якби автору було визначено .Xdefaults / .Xresources, які відрізняються від значень за замовчуванням. Але здається, що кожна 256 тематична тема, яку я використовую, значно відрізняється від того, що вони повинні виглядати. Чи є якийсь інший файл, який встановлює кольори, які мені відсутні?
jmathew

Я думаю, що якщо ми говоримо про X11, .Xdefaults і .Xresources - це лише файли, які були залучені (колишні застарілі в системах Archlinux). Звичайно, кольори терміналів за замовчуванням повинні жити в якомусь місці і можуть бути різними, враховуючи різні дистрибутиви Linux. Крім того, ми не можемо забути, що емулятори терміналів, таких як Gnome Terminal, можуть мати користувальницькі кольори або використовувати систему, оскільки ми не можемо точно знати, чи створив тему користувальницькі кольори чи ні, хоча це дуже правдоподібно. Будь-який фрік, який, як я, коли-небудь робив тему vim, впевнений, що їх термінальні кольори налаштовані.
Олексій

0

спробуйте поставити:

export TERM=xterm-256color

у вашому башерку.

Це має виправити ...


2
Експорт значення $ TERM у ваші .bashrcрідкісні "виправлення"; це більш імовірно, що це призведе до інших ненавмисних проблем ...
Jasonwryan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.