
Una característica pequeña pero visualmente agradable y que aumenta ligeramente la usabilidad. Me gustaría que Vim usara un color de fondo diferente para la ventana activa.
Aquí hay un bosquejo de lo que busco:
Normalmente, ese vim tendría todo el fondo en negro, pero si solo la ventana activa tuviera su propio color para resaltar la atención del usuario. ¡Resaltar sólo la barra de estado no es suficiente!
Respuesta1
Heptite, gracias por la idea.
Simplemente reemplazo los autocmd de WinEnter y WinLeave para agregar/eliminar números de línea delante de cada línea:
augroup BgHighlight
autocmd!
autocmd WinEnter * set number
autocmd WinLeave * set nonumber
augroup END
Ahora es más elegante rastrear qué ventana está activa.
Respuesta2
Los grupos resaltados que controlan el color de fondo predeterminado son " Normal
" y " NonText
". Lamentablemente, estos son aspectos destacados "globales" y no se pueden "localizar" por ventana.
Sin embargo, aquí hay un ejemplo realmente feo y torpe:
augroup BgHighlight
autocmd!
resaltar ActiveWindow guibg=azul claro
autocmd WinEnter * llamar a matchadd('ActiveWindow', '.*', 10, 1682)
autocmd WinLeave * llamar a matchdelete(1682)
augroup END
doautocmd BgHighlight WinEnter -
Dado que este es solo un ejemplo, tendrá que modificarlo para adaptarlo a sus necesidades individuales, como agregar un resaltado ctermbg=... junto con guibg=...
El inconveniente es que esto sólo resaltará el fondo del texto existente en los archivos, no toda la línea/ventana. (Como dije, feo y torpe).
Respuesta3
Estaba buscando lo mismo y descubrí (a través de este númerohttps://github.com/vim/vim/issues/2686) que esto ahora es compatible a través de wincolor
(https://vimhelp.org/options.txt.html#%27wincolor%27), que se puede configurar localmente (setl), así que agregué esto en mi vimrc.
" different color depending on focus
hi NormalNC ctermbg=234
augroup winbg
autocmd!
au WinEnter * setl wincolor=
au WinLeave * setl wincolor=NormalNC
augroup END
lo que me da este resultado (sí, no busco una diferencia muy grande, pero créanme, lo cambia todo).
Respuesta4
Agregando la solución proporcionada por @Tshirtman, simplemente modifiqué esa personalización a esto y parecía verse muy bien al cambiar entre paneles divididos (simplemente comparto lo mismo):
hi NormalNC ctermbg=236 ctermfg=102
augroup winbg
autocmd!
au WinEnter * setl wincolor= syn=on
au WinLeave * setl wincolor=NormalNC syn=off
augroup END