Vim和Tmux开启256-Color和True-Color支持
为什么需要开启256-Color和True-Color支持
当为Vim编辑器安装一些主题时,有的主题是需要启用256-Color和True-Color支持才能正常显示使用!
- 256-color又名8-bit color,最大支持2的8次方种颜色!
- true-color又名24-bit color,最大支持2的24次方种颜色!
开启256-Color支持
开启256-Color支持需要同时满足:
- 终端 支持
- VIm 支持
查看终端类型和配色
echo $TERM #查看当前终端类型,term/linx...
tput colors #默认的配色是8位的,无法支持主题显示
设置终端为256色
# 根据配色文件设置终端类型
cat > /etc/profile.d/bn-xterm-color.sh <<EOF
if [[ -e /usr/share/terminfo/x/xterm-256color || -e /lib/terminfo/x/xterm-256color ]]; then
export TERM='xterm-256color'
else
export TERM='xterm-color'
fi
EOF
# 如果没有xterm-256color文件先进行安装:apt install ncurses-base
# 重新加载设置
source /etc/profile
# 验证终端配色
tput colors
设置Vim启用256色
# 编辑 ~/.vimrc 配置文件,增加配置项:
set t_Co=256 #t_Co即terminal Color
开启True-Color支持
开启True-Color支持需要同时满足:
- 模拟终端 支持
- VIm 支持
- Tmux 支持(如果使用)
验证终端True-Color支持
真彩色的支持是需要终端的支持的,常用的终端(如:iterm2)都已经支持。
如果检查终端不支持真彩色,那只能更换一个支持的终端客户端软件,继续后续的教程!
验证方式:
# 终端里执行以下脚本
awk 'BEGIN{
s="/\\/\\/\\/\\/\\"; s=s s s s s s s s;
for (colnum = 0; colnum<77; colnum++) {
r = 255-(colnum*255/76);
g = (colnum*510/76);
b = (colnum*255/76);
if (g>255) g = 510-g;
printf "\033[48;2;%d;%d;%dm", r,g,b;
printf "\033[38;2;%d;%d;%dm", 255-r,255-g,255-b;
printf "%s\033[0m", substr(s,colnum+1,1);
}
printf "\n";
}'
如果支持真彩色,则应该显示如下图所示的连续色彩变化的图像,否则应该就是不支持:
另外一种验证方式:
# 终端里执行脚本
curl -fL https://raw.githubusercontent.com/Beavan/tools/master/sh/24-bit-color.sh |bash
Xshell开启True-Color支持
Xshell6(Build0181)之后版本是支持True-Color的,但之前的版本不支持!
依次点击:"工具" -> "选项" -> "高级",在子选项卡有如下图一个配置:
选择"使用本色"复选框,确定保存,然后重启xshell即可;
设置Vim启用True-Color
vim >= 7.4.1770 及 neovim >= 0.2.2 都支持真彩色,但需要少许配置,在 .vimrc 中加入:
" 配色方案
set t_Co=256 " 设置Vim支持256色,上文已介绍过
" 开启True-Color,注意,不支持真彩色的终端将显示异常
if has("termguicolors")
" fix bug for vim
set t_8f=^[[38;2;%lu;%lu;%lum " 这里^[[38中的^[需要替换,使用ctrol+v然后按esc
set t_8b=^[[48;2;%lu;%lu;%lum " 这里^[[38中的^[需要替换,使用ctrol+v然后按esc
" enable true color
set termguicolors
endif
配置Tmux支持True-Color
如果习惯使用tmux进行会话管理,会发现在tmux中使用vim依然无法显示正常,这是因为tmux中模式没有开启256-Color/True-Color,
tmux > 2.2 版本支持真彩色,在 .tmux.conf 中添加如下内容,然后重新开启 tmux 即可(先退出所有正在运行的 tmux 后再重开 tmux)。
# 设置tmux支持256-color
set -g default-terminal screen-256color
set-option -ga terminal-overrides ",*256col*:Tc" #这句是关键