2009-11-09 21 views
8

Mam wiersze następujących w moim .vimrc do podkreślają dłuższe niż 80 znaków:Ograniczanie dopasowania w vim do niektórych typów plików?

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

Działa to całkiem dobrze. Problem polega jednak na tym, że wolałbym go, gdyby działał tylko na niektórych typach plików. Zasadniczo, każdy język programowania powinien być podświetlony, a pliki takie jak HTML, Xml i Txt nie powinny być. Jestem prawie pewny, że mogę to zrobić z autocmdem, ale nie jestem pewien, czy to najlepszy sposób na osiągnięcie tego celu. Ktoś ma jakieś opinie?

Odpowiedz

6

Brzmi jak możesz coś takiego:

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

wydaje się działać dla mnie w każdym razie :-)

+1

Argh, tak naprawdę to nie jest to, o co prosiłeś. Hmm, zastanawiam się czy możliwe jest zanegowanie FileType ... – Benj

+0

Tak, jak powiedziałem, myślę, że zrobienie tego w ten sposób z autocmdami może działać wystarczająco dobrze, po prostu trzeba zamienić, które pliki są tutaj. Zamiast html i xml, powinno być c, C++, etc ... Tak więc, jeśli TypeType mógłby zostać zanegowany, to byłoby jeszcze lepiej. –

+0

Hmm, nie sądzę, że tak. Wygląda na to, że będziesz musiał podać listę typów plików, dla których chcesz wyróżnić tę opcję. – Benj

7

problem z użyciem mecz dla zadania jak to jest, że to jest lokalny aktywny nie do edytowanego bufora. Chciałbym spróbować coś wzdłuż następujących linii:

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() 

Zasadniczo, chcesz uruchomić zawsze, gdy zmienia się bufor w bieżącym oknie. W tym momencie ocenisz, jaki ma typ pliku, jaki ma bufor, i dostosowujesz, czy dopasowanie ma być aktywne, czy nie.

Jeśli chcesz także obsługiwać nienazwany bufor, a następnie ustawić jego typ pliku (albo poprzez zapisanie, albo ustawienie ręcznie & ft), parametr FileType powinien zostać dodany do listy.

Powiązane problemy