vim中的termguicolors让一切都是白色的

epggiuax  于 2023-06-06  发布在  其他
关注(0)|答案(2)|浏览(459)

这个想法是,通过在Vim中使用set termguicolors,我应该获得配色方案(gruvbox),以便在我的终端(st,具有真彩色支持)中查看,就像在GVim中一样。但我得到的只是黑底白色。
vimrc中设置colorscheme的部分:

set background=dark
colorscheme gruvbox
set termguicolors
k5ifujac

k5ifujac1#

你可以读: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支持在终端中使用真彩色(取自|高光引导|和/或|高亮显示|),假定终端支持这一点。要使其工作,需要设置“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_ option值和三个无符号长整数调用,这些整数可以具有0到255(包括0和255)之间的任何值,分别表示红色、绿色和蓝色。

wh6knrhe

wh6knrhe2#

什么是$TERMset termguicolors似乎只有在TERMxterm*时才有效。
我设置它是为了让它与其他东西一起工作,比如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*都使用truecolor

相关问题