Rendere la finestra attiva in vim più ovvia


22

Il mio spazio di lavoro è normalmente un xterm molto grande con vim, suddiviso in sei o più buffer. Sarebbe davvero utile se fosse più ovvio quale fosse il buffer attivo. In questo momento sto usando la presenza di numeri di riga per questo:

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

ma ciò significa che quando cambio i buffer il mio codice salta a sinistra oa destra, il che è fastidioso. Inoltre, vorrei essere in grado di vedere qual è la riga 94 anche in un buffer inattivo . Quindi c'è un modo per cambiare i colori dei numeri di riga nel buffer attivo?

Risposte:


26

Seguendo il modello, è possibile variare diverse proprietà, come colorcolumn:

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

Questo colora la colonna 80 sulla finestra corrente, disabilitandola sulle altre. È un po 'meno stridente che impostare / annullare i numeri di riga.

Un'opzione ancora meno invadente, se sei abituato a evidenziare la riga corrente (imposta cul), è di fare:

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

Tutto dipende dal tuo utilizzo e da ciò che sei disposto a sopportare.


11

Il colore della linea di stato è il modo più comune per sapere quale finestra è attiva. È definito nel tuo schema di colori con queste due linee:

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

Il primo è per la finestra corrente, il secondo è per la finestra "non corrente".

Questo è un estratto di xoria256 , dovresti adattare i colori al tuo schema cromatico.

Ma potresti provare qualcosa del genere (attenzione, i colori nella seconda riga sono completamente casuali):

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

Avevo già provato a cambiare l'evidenziazione LineNr su WinEnter / WinLeave, ma sembra che la colorazione LineNr sia globale.
DrHyde,

Sì, e ho dovuto aspettare il tuo commento per ricordarlo. Quindi, no, se LineNr è globale non c'è ovviamente modo di cambiarlo in una finestra specifica. Non pensi che lo statusline sia abbastanza?
Romainl,

Mi chiedevo se potesse esserci un'altra versione per finestra di LineNr. E no, non credo che la linea di stato sia sufficiente. Aiuta, ma mi piacerebbe di più. Un problema con l'uso della linea di stato è che avere l'indicatore della finestra attiva nella parte inferiore della finestra è esattamente l'opposto di quello che abbiamo praticamente ovunque - una barra del titolo nella parte superiore di una finestra che cambia colore - quindi c'è un momento fermati a pensare "oh sì, vim fa il contrario". Considerando che i numeri di riga sono sempre , in ogni applicazione, nello stesso posto.
DrHyde,

Mi piacerebbe davvero se potessi cambiare il colore di sfondo della finestra, ma sembra che, da quanto sopra, questo non sia possibile.
Jonathan Hartley,

Usando hi StatusLine...e hi StatusLineNC...funziona come un fascino!
Luc M,


2

Questo è ciò che faccio:

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

I numeri relativi sono solo un aiuto per calcolare la quantità ripetuta di comandi, non serve a loro in una finestra che non si sta modificando.



1

Puoi aggiungerlo al tuo ~/.vimrc, in modo che le barre di stato delle finestre inattive abbiano uno sfondo grigio scuro per differenziarsi dalla barra di stato bianca della finestra attiva.

highlight StatusLineNC cterm=bold ctermfg=white ctermbg=darkgray

Vedi questo esempio di screenshot. La finestra centrale è attiva (barra di stato bianca). Le finestre sinistra e destra sono inattive (barra di stato grigio scuro).

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.