Как заставить VIM правильно отображать 256 цветов

17

Я пытаюсь получить 256 цветных файлов темы для работы с VIM под xterm.

Это peaksea как это выглядит для меня:

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

Как это должно выглядеть: как это должно выглядеть

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

set t_Co=256 работает нормально но

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

приводит к тому, что escape-последовательности отображаются на терминале:

РЕДАКТИРОВАТЬ: Микель был прав, мне нужно было нажать 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

РЕДАКТИРОВАТЬ: Попытки решения

Я уже установил rxvt-unicode и использовал это ранее. Однако у меня была такая же проблема. Вот бок о бок сравнение двух. Слева - xterm, справа - urxvt. Открыт файл .Xdefaults, который показывает настройки для urxvt, один из которых может быть проблемой?

xterm left urxvt right

Я также запустил скрипт цветового теста с, казалось бы, положительным выводом. Верхняя часть - это xterm, нижняя - это urxvt. top xterm bottom urxvt

$ echo $TERM
xterm-256color

Обходной путь решения

Сейчас я использую CSApprox, и он, кажется, работает достаточно хорошо. Что меня все еще смущает, так это то, что тема не работает, даже если для нее определены соответствующие настройки цвета консоли. Возможно, это как-то связано с тем, как vim считает себя. Он был установлен как часть пакета gvim, поэтому он мог игнорировать настройки cterm.

РЕДАКТИРОВАТЬ: И теперь, кажется, все в порядке ..

Странно после установки CSApprox, а затем удаления его, кажется, все работает, как и должно. Просто скачал другую цветовую схему, и она отлично загрузилась даже без работающего модуля CSApprox.

jmathew
источник
Какой у вас $ TERM? Знает ли vim, что он может использовать 256 цветов?
Ричард Хам
1
xterm довольно проблематичен с UTF8 и цветами и тому подобное. Рассматривали ли вы использовать urxvtи сохранить себе суматоху? ( pacman -S rxvt-unicode).
Калеб
1
Как вы печатали ^[? Вы должны сделать это, используя Ctrl + V + Esc.
Микель
@Mikel, ты был прав насчет этого, но, похоже, ничего не
изменилось
@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, но он также имеет определенные функции графического интерфейса. Может ли это мешать?
Jmathew
Не могли бы вы попробовать с другой цветовой гаммой? Я не ожидаю, что это будет иметь большое значение, но вы никогда не знаете. Еще одна вещь, о которой я могу подумать - это перекомпилировать vim из исходных текстов, форсируя 256 цветов по умолчанию. Может быть, пакет в арке странный ...
Сардатрион - Восстановить Монику
1

Дело не только в том, что ваш терминал должен поддерживать 256 цветов, тема в 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

Alex
источник
Да, я понимаю, что cterm - это то, что он использует в консоли. Дело в том, что у меня нет файла .Xresources и ничего в моих файлах .Xdefaults, которые бы задали цвет другим, таким как передний план и фон. Ни один из цветов не переопределен. Единственное, что я могу себе представить, это если бы у автора были определены .Xdefaults / .Xresources, которые отличались от значений по умолчанию. Но, похоже, что каждая тема из 256 цветов, которую я использую, значительно отличается от того, как они должны выглядеть. Есть ли какой-то другой файл, который устанавливает цвета, которые мне не хватает?
Jmathew
Я думаю, что если мы говорим о X11, то файлы .Xdefaults и .Xresources являются единственными задействованными файлами (ранее устаревшими в системах Archlinux). Конечно, цвета терминала по умолчанию должны жить в каком-то месте и могут отличаться в зависимости от различных дистрибутивов Linux. Кроме того, мы не можем забывать, что эмуляторы терминала, такие как Gnome Terminal, могут иметь пользовательские цвета или использовать системные, поскольку мы не можем точно знать, использовал ли создатель темы пользовательские цвета или нет, хотя это очень правдоподобно. Любой урод, который, как я, когда-либо делал тему vim, наверняка настроил свои терминальные цвета.
Алекс
0

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

export TERM=xterm-256color

в вашем bashrc.

Это должно исправить это ...

phildobbin
источник
2
Экспорт значения $ TERM в ваши .bashrcредко что-либо «исправляет»; это скорее приведет к другим непреднамеренным проблемам ...
jasonwryan