VIM 中的术语颜色使一切都变得黑白

  • 本文关键字:黑白 术语 颜色 VIM vim
  • 更新时间 :
  • 英文 :


这个想法是,通过在 Vim 中使用set termguicolors,我应该让配色方案 (gruvbox( 在我的终端(st,具有真正的颜色支持(中查看,就像在 GVim 中一样。但我得到的只是黑色背景上的白色文字。

vimrc 中设置配色方案的部分:

set background=dark
colorscheme gruvbox
set termguicolors

你可能会读:h xterm-true-color.

我也在使用st,事实上,设置termguicolors只给了我黑白的颜色。

但是通过遵循帮助中的建议,我添加了以下内容:

let &t_8f = "<Esc>[38;2;%lu;%lu;%lum"
let &t_8b = "<Esc>[48;2;%lu;%lu;%lum"

然后颜色再次出现。希望它能有所帮助。

以下是:h xterm-true-color的全部摘录:

Vim支持在终端中使用真彩色(取自 |亮点|和 |highlight-guibg|(,假设终端 支持这一点。要使这项工作,"termguicolors"选项需要 被设置。有关列表,请参阅 https://gist.github.com/XVilka/8346728 支持真彩色的终端。

有时设置"termguicolors"是不够的,必须设置 |t_8f|和 |t_8b|选项显式。这些选项的默认值 是"^[[38;2;%lu;%lu;%lum" 和 "^[[48;2;%lu;%lu;%lum"分别, 但它仅在$TERMxterm时设置。某些终端接受 相同的序列,但所有分号都替换为冒号(这是 实际上更兼容,但支持较少(:

let &t_8f = "<Esc>[38:2:%lu:%lu:%lum"
let &t_8b = "<Esc>[48:2:%lu:%lu:%lum"

这些选项包含 printf 字符串,其中 |printf((|(实际上,它的C 等效,因此l修饰符(与t_选项值调用,并且 三个无符号长整数,其值可能介于 0 和 255 之间 (含(分别代表红色、绿色和蓝色。

什么是$TERMset termguicolors似乎只有在xterm*的情况下才能TERM工作。

我设置它是为了使其与其他内容一起使用,例如screen/tmux

if !has('gui_running') && &term =~ '%(screen|tmux)'
let &t_8f = "<Esc>[38;2;%lu;%lu;%lum"
let &t_8b = "<Esc>[48;2;%lu;%lu;%lum"
endif
set termguicolors

通过这种方式,vim 对xterm*screen*/tmux*都使用真彩色

最新更新