Uczynienie aktywnego okna w vimie bardziej oczywistym


22

Mój obszar roboczy to zwykle jeden bardzo duży xterm z vimem, podzielony na sześć lub więcej buforów. Byłoby naprawdę pomocne, gdyby było bardziej oczywiste, który z nich jest aktywnym buforem. Obecnie używam do tego obecności numerów linii:

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

ale to oznacza, że ​​kiedy zmieniam bufory, mój kod przeskakuje w lewo lub w prawo, co jest denerwujące. Dodatkowo chciałbym móc zobaczyć, która linia jest 94, nawet w nieaktywnym buforze. Czy jest jakiś sposób na zmianę kolorów numerów linii w aktywnym buforze?

Odpowiedzi:


26

Zgodnie z szablonem możesz zmieniać różne właściwości, takie jak kolumna kolorów:

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

Spowoduje to pokolorowanie kolumny 80 w bieżącym oknie, a jednocześnie wyłączenie jej w innych. To trochę mniej denerwujące niż ustawianie / rozbrajanie numerów linii.

Jeszcze mniej inwazyjną opcją, jeśli jesteś przyzwyczajony do podświetlania bieżącej linii (set cul), jest:

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

Wszystko sprowadza się do twojego użytkowania i tego, co chcesz znieść.


11

Kolor linii statusu jest najczęstszym sposobem sprawdzenia, które okno jest aktywne. Jest zdefiniowany w twoim schemacie kolorów za pomocą tych dwóch linii:

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

Pierwszy dotyczy bieżącego okna, drugi dotyczy „nieprądowego” okna.

Jest to fragment Xoria256 , powinieneś dostosować kolory do swojego schematu kolorów.

Ale możesz spróbować czegoś takiego (uwaga, kolory w drugiej linii są całkowicie losowe):

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

Próbowałem już zmienić podświetlenie LineNr w WinEnter / WinLeave, ale wygląda na to, że kolorowanie LineNr jest globalne.
— DrHyde

Tak, musiałem czekać na twój komentarz, aby to zapamiętać. Więc nie, jeśli LineNr jest globalny, nie ma oczywiście możliwości zmiany go w określonym oknie. Czy nie uważasz, że linia statusu jest wystarczająca?
— romainl

Zastanawiałem się, czy może istnieć inna wersja LineNr dla okna. I nie, nie sądzę, aby linia statusu była wystarczająca. Pomaga, ale chciałbym więcej. Jednym z problemów z używaniem linii statusu jest to, że posiadanie wskaźnika aktywnego okna u dołu okna jest dokładnym przeciwieństwem tego, co mamy prawie wszędzie - pasek tytułu u góry okna, który zmienia kolor - więc jest chwila zatrzymajcie się, aby pomyśleć „o tak, vim robi to na odwrót”. Podczas gdy numery linii są zawsze , w każdym zastosowaniu, w tym samym miejscu.
— DrHyde

Naprawdę chciałbym, jeśli możesz zmienić kolor tła okna, ale wygląda na to, że z powyższego nie jest to możliwe.
— Jonathan Hartley

Korzystanie hi StatusLine...i hi StatusLineNC...działa jak urok!
— Luc M


2

Tym się właśnie zajmuję:

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

Liczby względne są tylko pomocą w obliczaniu powtarzalnej liczby poleceń, nie ma dla nich zastosowania w oknie, którego nie edytujesz.



1

Możesz dodać to do swojego ~/.vimrc, co spowoduje, że paski stanu nieaktywnych okien będą miały ciemnoszare tło, aby odróżnić się od białego paska stanu aktywnego okna.

highlight StatusLineNC cterm=bold ctermfg=white ctermbg=darkgray

Zobacz ten zrzut ekranu. Środkowe okno jest aktywne (biały pasek stanu). Lewe i prawe okna są nieaktywne (ciemnoszary pasek stanu).

wprowadź opis zdjęcia tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.