问题描述
我有一个可爱的Vim colorscheme(xoria256),它在GVim中看起来很棒,但是当我在终端中使用正常的vim
时,colorscheme只是部分支持 – 例如,使用默认的semi-transparent茄子背景色。我如何让Terminal忠实地渲染我的Vim色彩?
最佳解决方案
GNOME终端支持256种颜色,但不公布其支持。通过放置以下内容可以覆盖vim的自动检测:
if $COLORTERM == 'gnome-terminal'
set t_Co=256
endif
在〜/.vimrc中。
注意:如果你使用GNU屏幕,它会很乐意吃那些256色代码并将它们转换成基本的16色。更好的解决方法是在启动screen /vim之前将TERM更改为xterm-256color。
2017年更新:如果您拥有足够先进的Vim(7.4.1799或更新版本)以及足够先进的终端仿真器(xterm,或基于最新VTE版本的gnome-terminal),则可以使用:set termguicolors
和终端vim将使用完整24位颜色由您的vim主题使用highlight guifg=#rrggbb guibg=#rrggbb
定义。
次佳解决方案
更通用的解决方案是安装术语类型”xterm-256color”。在10.04中,我认为它是默认安装的。以前你需要安装”ncurses-term”来获取它。
然后在.bashrc中使用类似下面的内容来设置术语类型:
if [ -n "$DISPLAY" -a "$TERM" == "xterm" ]; then
export TERM=xterm-256color
fi
如果您希望只对某些程序具有256色的颜色(可能会让其他程序感到困惑),请改为使用:
TERM=xterm-256color myprogram
并可能将其设置为程序的别名。
然后检查您的终端颜色功能:
$ tput colors
256
你仍然可能需要上面的vim设置让vim识别它。大多数应用程序会自动识别256种颜色(如果他们可以使用它们)。
Emacs的色彩主题也更好,256色。要检查它是否可以运行256色:
M-x list-colors-display
256colors.pl是Perl脚本,它将显示终端中的所有颜色。
第三种解决方案
只需在$HOME/.bashrc
中包含下面的行(最好在文件的最后一行):
export TERM="xterm-256color"
并保存它。之后,重新启动您的gnome-terminal。这个改变不仅在vim中可用,而且可用于所有的终端应用程序。
要检查它是否工作,运行这个小script:
#!/usr/bin/env python
# Copyright (C) 2006 by Johannes Zellner, <johannes@zellner.org>
# modified by mac@calmar.ws to fit my output needs
# modified by crncosta@carloscosta.org to fit my output needs
import sys
import os
def echo(msg):
os.system('echo -n "' + str(msg) + '"')
def out(n):
os.system("tput setab " + str(n) + "; echo -n " + ("\"% 4d\"" % n))
os.system("tput setab 0")
# normal colors 1 - 16
os.system("tput setaf 16")
for n in range(8):
out(n)
echo("\n")
for n in range(8, 16):
out(n)
echo("\n")
echo("\n")
y=16
while y < 231:
for z in range(0,6):
out(y)
y += 1
echo("\n")
echo("\n")
for n in range(232, 256):
out(n)
if n == 237 or n == 243 or n == 249:
echo("\n")
echo("\n")
os.system("tput setaf 7")
os.system("tput setab 0")
此后,您将看到如下内容(取决于您的gnome-terminal主题):