![如何让VIM正确显示256色](https://linux22.com/image/24889/%E5%A6%82%E4%BD%95%E8%AE%A9VIM%E6%AD%A3%E7%A1%AE%E6%98%BE%E7%A4%BA256%E8%89%B2.png)
我正在尝试让 256 色主题文件在 xterm 下与 VIM 一起使用。
这是峰海我觉得怎么样:
它应该是什么样子:
我尝试按照维基页面上的提示进行操作,但没有成功。
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
.X默认值
!--------------------- 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。
$ echo $TERM
xterm-256color
解决方案
我现在正在使用近似值而且看起来效果很好。我仍然感到困惑的是,为什么主题不起作用,即使它定义了适当的控制台颜色设置。也许这与 vim 看待自己的方式有关。它作为 gvim 包的一部分安装,因此它可以忽略 cterm 设置。
编辑:现在一切似乎都很好..
奇怪的是,在安装 CSApprox 然后将其删除后,一切似乎都按预期工作。刚刚下载了另一个 colorcheme,即使没有运行 CSApprox 模块,它也可以完美加载。
答案1
迦勒他的评论是正确的。 xterm 相当老了,您应该考虑切换到 urxvt —— 至少支持 256 和 utf-8 的版本,请参阅您的包管理器来安装正确的版本。
我有一个与你相同的设置——很棒的 WM、vim、urxvt、tmux/screen——它们都可以很好地处理 256 色和 utf-8。我已将 TERM 设置为,xterm-256color
以防您需要手动设置。
嗯...编辑后,您可以检查一下 vim 颜色主题是否为终端正确定义了吗?
答案2
不仅你的终端应该支持 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 中
答案3
尝试输入:
export TERM=xterm-256color
在你的 bashrc 中。
那应该可以解决它...