2009-11-09 15 views
8

Ho le righe seguenti nel mio Vimrc per evidenziare più lunghi di 80 caratteri:Limitare una corrispondenza in vim a determinati tipi di file?

highlight OverLength ctermbg=red ctermfg=white guibg=#592929 
match OverLength /\%81v.*/ 

Questo funziona abbastanza bene. Tuttavia, il problema è che preferirei che funzioni solo su determinati tipi di file. Fondamentalmente, qualsiasi linguaggio di programmazione dovrebbe essere evidenziato e cose come i file html, xml e txt non dovrebbero essere. Sono abbastanza sicuro di poterlo fare facilmente con un autocmd, ma non sono sicuro che sia il modo migliore per raggiungere questo obiettivo. Qualcuno ha qualche opinione?

risposta

6

Suona come si potrebbe desiderare qualcosa di simile:

autocmd FileType html,xml highlight OverLength ctermbg=red ctermfg=white guibg=#592929 
autocmd FileType html,xml match OverLength /\%81v.*/ 

sembra funzionare per me comunque :-)

+1

Argh, in realtà non è proprio quello che hai chiesto. Hmm, mi chiedo se è possibile negare il FileType ... – Benj

+0

Sì, come ho detto, penso che farlo in questo modo con l'autocmds potrebbe funzionare abbastanza bene, basta solo scambiare i file qui. Invece di html e xml, dovrebbe essere c, C++, ecc ... Quindi, se il FileType potrebbe essere negato, allora sarebbe ancora meglio. –

+0

Hmm, non penso che lo sia. Sembra che dovrai elencare effettivamente i tipi di file per i quali desideri evidenziare. – Benj

7

Il problema con l'utilizzo di corrispondenza per un compito come questo è che è locale al attiva finestra, non al buffer in fase di modifica. Mi piacerebbe provare qualcosa lungo le seguenti linee:

highlight OverLength ctermbg=red ctermfg=white guibg=#592929 
fun! UpdateMatch() 
    if &ft !~ '^\%(html\|xml\)$' 
     match OverLength /\%81v.*/ 
    else 
     match NONE 
    endif 
endfun 
autocmd BufEnter,BufWinEnter * call UpdateMatch() 

sostanza, si vuole far scattare ogni volta che il buffer nella finestra cambia in corso. A quel punto, si valuta quale tipo di file ha il buffer e si aggiusta se la partita debba essere attiva o meno.

Se si desidera supportare anche la modifica di un buffer senza nome e quindi l'impostazione del relativo tipo di file (tramite salvataggio o impostazione manuale & ft), FileType dovrebbe essere aggiunto all'elenco.

Problemi correlati