Hacer que la ventana activa en vim sea más obvia

22

Mi espacio de trabajo es normalmente un xterm muy grande con vim, dividido en seis o más buffers. Sería realmente útil si fuera más obvio cuál era el búfer activo. En este momento estoy usando la presencia de números de línea para esto:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set number
    autocmd WinLeave * set nonumber
augroup END

pero esto significa que cuando cambio los buffers, mi código salta hacia la izquierda o hacia la derecha, lo cual es molesto. Además, me gustaría poder ver cuál es la línea 94 incluso en un búfer inactivo . Entonces, ¿hay alguna forma de cambiar los colores de los números de línea en el búfer activo?

DrHyde
fuente

Respuestas:

26

Siguiendo su plantilla, puede variar diferentes propiedades, como colorcolumn:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set colorcolumn=80
    autocmd WinLeave * set colorcolumn=0
augroup END

Esto coloreará la columna 80 en su ventana actual, mientras la deshabilita en las demás. Es un poco menos discordante que establecer / desarmar números de línea.

Una opción aún menos intrusiva, si está acostumbrado a resaltar la línea actual (establecer cul), es hacer:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set cul
    autocmd WinLeave * set nocul
augroup END

Todo se reduce a su uso y a lo que está dispuesto a soportar.

fgb
fuente
11

El color de la línea de estado es la forma más habitual de saber qué ventana está activa. Se define en su esquema de colores con estas dos líneas:

hi StatusLine   ctermfg=15  guifg=#ffffff ctermbg=239 guibg=#4e4e4e cterm=bold gui=bold
hi StatusLineNC ctermfg=249 guifg=#b2b2b2 ctermbg=237 guibg=#3a3a3a cterm=none gui=none

El primero es para la ventana actual, el segundo es para la ventana "no actual".

Este es un extracto de xoria256 , debe adaptar los colores a su esquema de colores.

Pero podría intentar algo así (cuidado, los colores en la segunda línea son completamente al azar):

augroup NrHighlight
  autocmd!
  autocmd WinEnter * hi LineNr ctermfg=247 guifg=#9e9e9e ctermbg=233 guibg=#121212
  autocmd WinLeave * hi LineNr ctermfg=274 guifg=#e9e9e9 ctermbg=133 guibg=#212121
augroup END
romainl
fuente
Ya intenté cambiar el resaltado de LineNr en WinEnter / WinLeave, pero parece que el color de LineNr es global.
DrHyde
Sí, y tuve que esperar tu comentario para recordar eso. Entonces, no, si LineNr es global, obviamente no hay forma de cambiarlo en una ventana específica. ¿No crees que la línea de estado es suficiente?
romainl
Me preguntaba si podría haber alguna otra versión por ventana de LineNr. Y no, no creo que la línea de estado sea suficiente. Ayuda, pero me gustaría más. Un problema con el uso de la línea de estado es que tener el indicador de la ventana activa en la parte inferior de la ventana es exactamente lo contrario de lo que tenemos en cualquier otro lugar: una barra de título en la parte superior de una ventana que cambia de color, por lo que hay un momento pausa para pensar "oh sí, vim hace esto al revés". Mientras que los números de línea están siempre , en cada aplicación, en el mismo lugar.
DrHyde
Realmente me gustaría que pudieras cambiar el color de fondo de la ventana, pero parece que, por lo anterior, esto no es posible.
Jonathan Hartley el
Usando hi StatusLine...y hi StatusLineNC...funciona como un encanto!
Luc M
2

Esto es lo que hago:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set relativenumber
    autocmd WinLeave * set norelativenumber
augroup END

Los números relativos son solo una ayuda para calcular la cantidad repetida de comandos, no tiene utilidad en una ventana que no está editando.

saga
fuente
1

Puede agregar esto a su ~/.vimrc, lo que hará que las barras de estado de las ventanas inactivas tengan un fondo gris oscuro para diferenciarse de la barra de estado blanca de la ventana activa.

highlight StatusLineNC cterm=bold ctermfg=white ctermbg=darkgray

Vea este ejemplo de captura de pantalla. La ventana central está activa (barra de estado blanca). Las ventanas izquierda y derecha están inactivas (barra de estado gris oscuro).

ingrese la descripción de la imagen aquí

Wisbucky
fuente