如何使VIM正确显示256色


17

我正在尝试使256个颜色主题文件在xterm下与VIM一起使用。

这是Peaksea对我的外观:

在此处输入图片说明

外观如何: 它应该看起来如何

我尝试遵循Wiki页面上的提示无济于事。

set t_Co=256 工作正常,但

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

导致转义序列显示在终端上:

编辑: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

编辑:尝试的解决方案

我已经安装了rxvt-unicode并在以前使用它。但是我有同样的问题。这是两者的并排比较。左边是xterm,右边是urxvt。打开的文件是.Xdefaults,它显示urxvt的设置,这可能是问题之一?

xterm左urxvt右

我还运行了看似正面输出的颜色测试脚本。顶部是xterm底部是urxvt。 顶部xterm底部urxvt

$ echo $TERM
xterm-256color

解决方法

我现在正在使用CSApprox,它似乎运行良好。我仍然感到困惑的是,即使定义了适当的控制台颜色设置,主题仍然无法工作。也许这与vim认为自己的方式有关。它是作为gvim软件包的一部分安装的,因此它可能会忽略cterm设置。

编辑:现在一切似乎都很好。

奇怪的是,安装CSApprox然后将其删除之后,一切似乎都可以正常工作。刚刚下载了另一个colorcheme,即使没有运行CSApprox模块,它也可以完美加载。


您的$ TERM是多少?vim知道可以使用256色吗?
理查德·汉姆

1
对于UTF8和颜色等,xterm确实存在问题。您是否考虑过使用urxvt并拯救自己?(pacman -S rxvt-unicode)。
Caleb)

1
您如何输入^[?您需要使用Ctrl + V + Esc来完成。
Mikel

@Mikel你说的没错,但似乎并没有改变
jmathew 2012年

@Caleb是什么问题?我实际上是从rxvt切换到xterm以获得更好的UTF-8支持,并且对我来说256种颜色均可使用。我TERM=screen-256color由于tmux而使用,但是在xterm-256color外部tmux上也可以使用。
2012年

Answers:


3

卡勒布(Careb)的评论正确。xterm已经相当老了,您应该考虑切换到urxvt -至少是启用256和utf-8的版本,请参考软件包管理器以安装正确的版本。

我为您设置了相同的设置-很棒的WM,vim,urxvt,tmux /屏幕-它们都可以很好地与256色和utf-8配合使用。我已将TERM设置为xterm-256color需要手动设置的情况。

嗡嗡声...编辑后,您可以检查是否为终端正确定义了vim颜色主题吗?


不确定您的意思是什么。peaksea.vim使用ctermfg / ctermbg,但是它也定义了gui函数。可以干扰吗?
jmathew 2012年

您可以尝试其他配色方案吗?我不希望这会产生很大的变化,但您永远不会知道。我能想到的另一件事是默认情况下从源强制256色重新编译vim。也许拱门里的包裹很奇怪...
Sardathrion-恢复莫妮卡2012年

1

不仅您的终端应支持256种颜色,而且vim中的主题将引用.Xdefaults / .Xresources中的颜色。要解决此问题,您应该使用与主题作者相同的颜色,或者改用gvim。

偷看代码,我可以看到它正确地支持gvim,这就是为什么使用CSAprox的原因,因为我认为它使用十六进制的gvim颜色代码(例如:#123ABC)并将其转换为终端颜色。

控制台模式下的Vim将采用以下颜色:

hi Normal ctermfg=16 ctermbg=254

在图形模式下:

hi Normal guifg=#d0d0d0 guibg=#202020

因此,如果您为终端颜色安装了某种“主题”,则会影响您在Vim中获得的颜色。另外,请仔细检查您是否拥有

set background=dark

在您的.vimrc中


是的,我知道cterm是在控制台中使用的东西。问题是我没有.Xresources文件,而.Xdefaults中没有任何设置颜色的东西,例如前景和背景。没有颜色被重新定义。我唯一可以想象的是,如果作者定义的.Xdefaults / .Xresources与默认值不同。但是,似乎我使用的每256个彩色术语主题与它们应该看起来的外观都有很大不同。还有其他文件可以设置我缺少的颜色吗?
jmathew 2012年

我认为,如果我们谈论X11,则仅涉及.Xdefaults和.Xresources(因为Archlinux系统中已弃用了前者)。当然,默认的终端颜色必须存在于某个地方,并且在各种Linux发行版中可能会有所不同。另外,我们不能忘记像Gnome Terminal这样的终端模拟器可以具有自定义颜色或使用系统的颜色,因为我们无法确定主题的创建者是否使用了自定义颜色,尽管这很合理。像我一样,任何怪胎都曾成为vim主题,请确定其终端颜色是自定义的。
Alex

0

尝试放入:

export TERM=xterm-256color

在您的bashrc中。

那应该解决...


2
导出$ TERM值时,.bashrc很少会“修复”任何东西;它更有可能导致其他意外问题……
jasonwryan 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.