2011-09-30 3 views
22

C'è un buon frammento per cambiare il colore del cursore:Vim CursorLine cambiamento di colore in modalità di inserimento

if &term =~ "xterm\\|rxvt" 
    " use an orange cursor in insert mode 
    let &t_SI = "\<Esc>]12;orange\x7" 
    " use a red cursor otherwise 
    let &t_EI = "\<Esc>]12;red\x7" 
    silent !echo -ne "\033]12;red\007" 
    " reset cursor when vim exits 
    autocmd VimLeave * silent !echo -ne "\033]112\007" 
    " use \003]12;gray\007 for gnome-terminal 
endif 

Come devo modificare questa che invece di cursore, CursorLine cambierebbe colore per esempio dal blu scuro al blu?

mio config completa è https://bitbucket.org/JackLeo/home-configs/src/5b8faf340f87/.vimrc

+4

mi piace la mappatura dei tasti arror con il commento "Utilizzare i tasti hjkl maledette". – Grammin

+0

Scrivo letteralmente \ qui o è una visualizzazione di^V'ESC '? Quando copio incollare il testo sopra nel mio .vimrc non fa nulla (e sì dice di essere un xterm ... è una sessione di stucco su una macchina Linux) –

risposta

27

Avere si guarda nel comando 'clou', che è un modo più semplice per controllare questo.

Ad esempio, per modificare la CursorLine,

:hi CursorLine guifg=red guibg=blue 

Riferimento:: help evidenziare

Per rendere più passare dal modo.

" Enable CursorLine 
set cursorline 

" Default Colors for CursorLine 
highlight CursorLine ctermbg=Yellow ctermfg=None 

" Change Color when entering Insert Mode 
autocmd InsertEnter * highlight CursorLine ctermbg=Green ctermfg=Red 

" Revert Color to default when leaving Insert Mode 
autocmd InsertLeave * highlight CursorLine ctermbg=Yellow ctermfg=None 

Posso essere possibile mescolare termcap colori con autocmd, ma IMO, evidenziare è più facile da mantenere a lungo termine (e nel caso se l'uso gVim occasionalmente)

+0

Lo so, lo sto usando nella configurazione file. Il punto è che voglio che cambierebbe a seconda se sono in modalità di inserimento. – JackLeo

+0

ha aggiornato la risposta per risolvere il problema "cambia colore in base alla modalità". –

+0

Questo è stato un suggerimento utile !! Grazie!! –

6

Questo è piuttosto semplice, mettere la di seguito nel file .vimrc o personalizzato colorscheme.

set cursorline 
autocmd InsertEnter * highlight CursorLine guifg=white guibg=blue ctermfg=white ctermbg=blue 
autocmd InsertLeave * highlight CursorLine guifg=white guibg=darkblue ctermfg=white ctermbg=darkblue 

Per maggiori informazioni consultare:

NB: È possibile utilizzare la stesso metodo per cambiare il colore del cursore senza tutti quelli if -statements e escape-sequences (e questo funzionerà anche in GVim).

+1

altri esempi utili 'cterm = bold' e puoi 'annullare' qualsiasi cosa con' NONE', ad es. Non ho evidenziato quando non si è in modalità Insert, con 'ctermfg = NONE ctermbg = NONE cterm = NONE' – artfulrobot

2

Quando si utilizza MacVim con 'Lokaltog/vim-powerline' è possibile impostare i colori normale/visivo/inserto in modo che corrispondano al colore della modalità powerline. Trovo estremamente utile sapere in quale modalità mi trovo senza leggere la powerline, specialmente su un grande schermo.

Ecco il codice che sto utilizzando, basato sulla risposta di @ Zarick-Lau.

Nel mio file colors/molokai.vim:

" Visual Mode Orange Background, Black Text 
hi Visual   guifg=#000000 guibg=#FD971F 

" Default Colors for CursorLine 
highlight CursorLine guibg=#3E3D32 
highlight Cursor guibg=#A6E22E; 

" Change Color when entering Insert Mode 
autocmd InsertEnter * highlight CursorLine guibg=#323D3E 
autocmd InsertEnter * highlight Cursor guibg=#00AAFF; 

" Revert Color to default when leaving Insert Mode 
autocmd InsertLeave * highlight CursorLine guibg=#3E3D32 
autocmd InsertLeave * highlight Cursor guibg=#A6E22E; 

Ecco un esempio utilizzando lo schema di colore originale Molokai.

Normale

normal mode (green

visiva

visual mode (orange)

Inserire

insert mode (blue)

Inoltre, è utile impostare il sistema operativo per selezionare visivamente anche lo stesso colore. Ad esempio, ho modificato il colore di evidenziazione in Orange in OSX e, quando seleziono il testo, ora è arancione anziché blu, come in VIM.

select orange highlight

Esempio

Ecco il momento clou arancione in uso nella casella di testo come sto scrivendo questa voce Stack Overflow. Ora tutto il testo che seleziono nel mio sistema operativo corrisponde alla configurazione VIM.

selecting text in the OS