这是一个虽小但视觉上令人愉悦的功能,并且稍微增加了可用性,我想让 Vim 对活动窗口使用不同的背景颜色。
以下是我所追求的草图:
通常情况下,vim 会将所有背景设为黑色,但如果活动窗口有自己的颜色来突出显示用户的注意力就好了。仅突出显示状态栏是不够的!
答案1
Heptite,谢谢你的想法。
我只需替换 WinEnter 和 WinLeave 自动命令即可在每行前面添加/删除行号:
augroup BgHighlight
autocmd!
autocmd WinEnter * set number
autocmd WinLeave * set nonumber
augroup END
现在跟踪哪个窗口处于活动状态更加时尚。
答案2
控制默认背景颜色的高亮组是“ Normal
”和“ NonText
”。遗憾的是,这些是“全局”高亮,无法根据每个窗口进行“本地化”。
然而,这是一个真正丑陋、笨拙的例子:
augroup BgHighlight
autocmd!
突出显示 ActiveWindow guibg=lightblue
autocmd WinEnter * 调用 matchadd('ActiveWindow', '.*', 10, 1682)
autocmd WinLeave * 调用 matchdelete(1682)
augroup END
doautocmd BgHighlight WinEnter -
因为这仅仅是一个示例,您必须对其进行修改以满足您的个人需求,例如添加 ctermbg=... 突出显示以及 guibg=...
缺点是这只会突出显示文件中现有文本的背景,而不是整个行/窗口。(就像我说的,丑陋而笨拙。)
答案3
我正在寻找同样的东西,并发现(通过这个问题https://github.com/vim/vim/issues/2686) 现在通过wincolor
(https://vimhelp.org/options.txt.html#%27wincolor%27) 选项,可以本地设置(setl),所以我将它添加到我的 vimrc 中。
" different color depending on focus
hi NormalNC ctermbg=234
augroup winbg
autocmd!
au WinEnter * setl wincolor=
au WinLeave * setl wincolor=NormalNC
augroup END
这给了我这个结果(是的,我不是在寻找很大的差异,但相信我,它改变了一切)。
答案4
添加@Tshirtman 提供的解决方案,我只是将该自定义修改为此,并且在拆分窗格之间切换时看起来非常漂亮(只是共享相同的):
hi NormalNC ctermbg=236 ctermfg=102
augroup winbg
autocmd!
au WinEnter * setl wincolor= syn=on
au WinLeave * setl wincolor=NormalNC syn=off
augroup END