Jak ustawić kolor tła tylko dla aktywnego okna Vima?

15

Mała, ale przyjemna wizualnie funkcja i nieco zwiększająca użyteczność, chciałbym, aby Vim używał innego koloru tła dla aktywnego okna.

Oto szkic tego, czego szukam:

wprowadź opis zdjęcia tutaj

Zwykle ten vim miałby całe tło w kolorze czarnym, ale gdyby tylko aktywne okno miało swój własny kolor, aby zwrócić uwagę użytkownika. Podświetlenie tylko paska stanu nie wystarczy!

souser12345
źródło

Odpowiedzi:

8

Heptite, dziękuję za pomysł.

Po prostu zastępuję WinEnter i WinLeave autocmd, aby dodać / usunąć numery linii przed każdą linią:

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

Teraz bardziej stylowe jest śledzenie, które okno jest aktywne.

t0d0r
źródło
To jest fajne. Szkoda, że ​​nie lubię numerów linii, więc jest to zbyt nieestetyczne.
souser12345
3

Grupy wyróżnień, które kontrolują domyślny kolor tła, to „ Normal” i „ NonText”. Niestety są to „globalne” najważniejsze informacje i nie można ich „zlokalizować” dla poszczególnych okien.

Oto jednak naprawdę brzydki, niechlujny przykład:

augroup BgHighlight autocmd
    !
    wyróżnij ActiveWindow guibg = jasnoniebieski autocmd WinEnter
    * połączenie matchadd („ActiveWindow”, „. *”, 10, 1682)
    autocmd WinLeave * połączenie matchdelete (1682)
augroup END

doautocmd BgHighlight WinEnter -

Ponieważ jest to tylko przykład, musisz go zmodyfikować, aby dopasować do indywidualnych potrzeb, na przykład dodać wyróżnienie ctermbg = ... wraz z guibg = ...

Wadą jest to, że podświetli to tylko tło istniejącego tekstu w plikach, a nie całą linię / okno. (Tak jak powiedziałem, brzydki i kludgy.)

Heptyt
źródło
Niezłe myślenie, ale wzór .*pasuje tylko do tekstu pliku; nic z reszty tła. Poza tym mam go tylko w terminalu z ctermbgnieruchomościami. Dziwne ...
souser12345,
Przepraszam, powinienem był bardziej jednoznacznie udzielić odpowiedzi. Zredagowałem to.
Heptyt