Vim的背景颜色可以根据当前模式改变吗?

jjjwad0x  于 2022-11-11  发布在  其他
关注(0)|答案(2)|浏览(193)

只是为了让标题更详细一点:
重点在于:“基于当前模式”
我希望在正常*可视模式时背景是一种颜色,而在 * 另一种 * 模式下,当我可以自由键入时(***插入**模式),* 自动 *(=〉可能是autocmd,如下面的解决方案中所述)。
如何才能做到这一点最好的方式,在所有现代风格的vim(特别是包括终端渲染)?

jv4diomz

jv4diomz1#

检查自动命令
http://vimdoc.sourceforge.net/htmldoc/autocmd.html
用于Vim 8

:autocmd InsertEnter * set bg=light
:autocmd InsertLeave * set bg=dark

对于VIM版本9.0,请检查
https://yianwillis.github.io/vimcdoc/doc/autocmd.html#ModeChanged
对于站点中的示例,您可以在进入可视模式时更改为相对编号

:au ModeChanged [vV\x16]*:* let &l:rnu = mode() =~# '^[vV\x16]'
:au ModeChanged *:[vV\x16]* let &l:rnu = mode() =~# '^[vV\x16]'
:au WinEnter,WinLeave * let &l:rnu = mode() =~# '^[vV\x16]'
aiqt4smr

aiqt4smr2#

highlight命令(临时)

使用highlight命令:

:highlight Normal ctermfg=darkgreen ctermbg=gray

这会将背景颜色设置为灰色,并带有绿色文本。
简短形式:

:hi Normal ctermfg=darkgreen ctermbg=gray

cterm种颜色[ctermfg + ctermbg]

颜色列表[cterm]:

NR-16   NR-8    COLOR NAME 
0       0       Black
1       4       DarkBlue
2       2       DarkGreen
3       6       DarkCyan
4       1       DarkRed
5       5       DarkMagenta
6       3       Brown, DarkYellow
7       7       LightGray, LightGrey, Gray, Grey
8       0*      DarkGray, DarkGrey
9       4*      Blue, LightBlue
10      2*      Green, LightGreen
11      6*      Cyan, LightCyan
12      1*      Red, LightRed
13      5*      Magenta, LightMagenta
14      3*      Yellow, LightYellow
15      7*      White

“NR-16”下的数字用于16色端子('t_Co'大于等于16).“NR-8”下面的数字用于8色端子('t_Co'小于16)。''表示为ctermfg设置了粗体属性。在许多8色终端中(例如,“linux”),这会导致出现明亮的颜色。这对背景颜色无效!没有'',粗体属性会被删除。如果您想以不同的方式设置粗体属性,将“cterm=”参数放在“ctermfg=”或“ctermbg=”参数之后。或者使用数字代替颜色名称。
这里的*表示“加8”,因此Blue12DarkGray8,依此类推。
请注意,颜色名称的大小写将被忽略。
请注意,这不是永久性的,当您关闭vim会话时,颜色方案将被丢弃并重置为默认值。

颜色变化(永久)

如果你想永久地实现这一点,我们必须访问vim启动文件.vimrc.vimrc文件保存了vim会话开始时初始化的可选运行时设置。我们将在colorscheme命令的帮助下添加我们想要的配色方案:

:colorscheme white

这会将默认背景配置为白色。
相关来源:

相关问题