受 http://blog.acgtyrant.com/%E5%9C%A8-Linux-%E4%B8%8B%E5%85%A8%E9%9D%A2%E4%BD%BF%E7%94%A8%E7%9C%9F%E5%BD%A9.html 这篇文章启发,知道了在终端的世界里有高于256色的True-Color的存在1。 对于常年不离开终端的重度Vim用户来讲,这种多色彩的支持的吸引力也是致命的。
目录
概览
想要真正的多色彩支持,需要 模拟终端
+ tmux
+ vim
三重的支持。这里说明下我的编程环境:windows 虚拟机(Ubuntu 18.04) + SecureCrt + Tmux + Vim 8.1。
于是我要做的就是在这几点上分别做True-Color支持。
模拟终端
我在Windows上偏爱使用的模拟终端是 SecureCrt,但,我在查阅 True-Color 支持列表时https://gist.github.com/XVilka/8346728#now-supporting-truecolour却发现 SecureCrt 不在支持之列。在试了几个Windows支持的虚拟终端之后,最终选定了 MobaXTerm
。
至于原因,无外乎其与 SecureCrt 相似的操作逻辑,以及提供 Personal Edition。
至于配色偏好,我依然选了墨绿色背景的 solarized 主题。2
tmux
这里采用网上常规的方法没有行得通,经多方搜寻,找到了 http://lists.gnu.org/archive/html/emacs-devel/2017-02/msg00635.html 更改 terminfo 使得 tmux 支持 Tc (True-Color) 的方法。(这里我采用了git上最新的 tmux 源码编译的 tmux)
常规方法,更改 $HOME/.tmux.conf
文件:
|
|
更改 Terminfo 方法(实测有效):
|
|
校验 True-Color 的方法:
|
|
效果图:
vim
这里要改的点主要有三个:
- 按照文档中方法的更改
.vimrc
文件
|
|
- 安装适合自己的支持真彩色的vim 主题,我这里选用的是相同配色的
solarized8
主题
|
|
- 在进入 vim 的 VISUAL 模式后,发现选定的行不能反色显示,而仅是失去了高亮,这很容易看不清选中的具体字符(比如注释也是没有高亮的,这里就很容易找不到选中边界)。
搜寻的结果则是终端的支持问题,无法识别
hi Visual gui=reverse
这个反色指令,于是手动调整了被选中文字的配色。
|
|
(依然在 .vimrc 文件中修改,具体位置则是紧接着主题配色后面)
before:
after:
这里同样是选中 358-363 行
补充
在使用过程中,还发现了 vim 8.1 中支持的 termdebug 与 true-color 的一个冲突:在 packadd termdebug
之后做了 set termguicolors
的操作的话,在实际调试代码时,正在执行的行就没办法高亮了。而正确的做法则是将 packadd termdebug
放在 set termguicolors
之后。
意义
由 256 色支持到 16万色支持,字面意义上就是颜色过渡更平滑了。而在 vim 中,就是代码看着更舒服了(不知道这里的代码颜色高亮有没有相应的True-color扩展)
8-bit color 又名 256 color, 24-bit color 又名 true color,一共有 16,777,216 colors ↩︎
与这款配色的渊源要回溯到 https://blog.csdn.net/zklth/article/details/8937905 这篇文章了,可惜文章中的图已经挂了大半,还好我有本地保存的 Evernote 版。 ↩︎