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.