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" #这句是关键
posted @ 2022-08-08 19:15  Beavan  阅读(2591)  评论(1编辑  收藏  举报