
Um recurso pequeno, mas visualmente agradável, e que aumenta um pouco a usabilidade, gostaria que o Vim usasse uma cor de fundo diferente para a janela ativa.
Aqui está um esboço do que estou procurando:
Normalmente esse vim teria todo o fundo em preto, mas se ao menos a janela ativa tivesse uma cor própria para chamar a atenção do usuário. Destacar apenas a barra de status não é suficiente!
Responder1
Heptita, obrigado pela ideia.
Acabei de substituir os autocmds WinEnter e WinLeave para adicionar/remover números de linha na frente de cada linha:
augroup BgHighlight
autocmd!
autocmd WinEnter * set number
autocmd WinLeave * set nonumber
augroup END
Agora ficou mais estiloso rastrear qual janela está ativa.
Responder2
Os grupos de destaque que controlam a cor de fundo padrão são " Normal
" e " NonText
". Infelizmente, esses são destaques "globais" e não podem ser "localizados" por janela.
No entanto, aqui está um exemplo realmente feio e desajeitado:
augroup BgHighlight
autocmd!
realçar ActiveWindow guibg=lightblue
autocmd WinEnter * call matchadd('ActiveWindow', '.*', 10, 1682)
autocmd WinLeave * call matchdelete(1682)
augroup END
doautocmd BgHighlight WinEnter -
Como este é apenas um exemplo, você terá que modificá-lo para atender às suas necessidades individuais, como adicionar um destaque ctermbg=... junto com o guibg=...
A desvantagem é que isso destacará apenas o plano de fundo do texto existente nos arquivos, e não a linha/janela inteira. (Como eu disse, feio e desajeitado.)
Responder3
Eu estava procurando o mesmo e descobri (através deste problemahttps://github.com/vim/vim/issues/2686) que isso agora é suportado por meio do wincolor
(https://vimhelp.org/options.txt.html#%27wincolor%27), que pode ser definida localmente (setl), então adicionei isso no meu vimrc.
" different color depending on focus
hi NormalNC ctermbg=234
augroup winbg
autocmd!
au WinEnter * setl wincolor=
au WinLeave * setl wincolor=NormalNC
augroup END
o que me dá esse resultado (sim, não estou procurando uma diferença muito grande, mas acredite, isso muda tudo).
Responder4
Adicionando a solução fornecida por @Tshirtman, acabei de modificar essa personalização e pareceu muito bom ao alternar entre painéis divididos (apenas compartilhando o mesmo):
hi NormalNC ctermbg=236 ctermfg=102
augroup winbg
autocmd!
au WinEnter * setl wincolor= syn=on
au WinLeave * setl wincolor=NormalNC syn=off
augroup END