W Vimie jak wyróżnić TODO: i FIXME:?
W vim, FIXME i TODO są podświetlone, ale nie mogę uzyskać FIXME: i TODO: (zwróć uwagę na dwukropek po słowie kluczowym), aby wyróżnić? Co powinienem umieścić w moim .vimrc aby to się stało?
3 answers
Cóż, już znalazłeś problem, ale oto dlaczego.
Istnieją trzy podstawowe typy dopasowania składni: słowa kluczowe, dopasowania i regiony. Słowa kluczowe są stałymi ciągami znaków, Zwykle używanymi dla słów kluczowych w języku podstawowym(int
, double
, ...), a także, w Twoim przypadku, dla FIXME i TODO. Naprawdę mam na myśli stałe ciągi; muszą być dokładne i całe słowa, w przeciwieństwie do dopasowań i regionów, które używają regex. Na przykład ze składni C:
syn keyword cTodo contained TODO FIXME XXX
Wygląda tak w zasadzie wszystkie wbudowane definicje składni, tylko z różnymi nazwami grup (cTodo).
iskeyword
mówi Vimowi, czy dany znak może być częścią słowa kluczowego. Domyślnie nie zawiera dwukropków, więc szukając słów kluczowych, vim widzi "FIXME:" jako "FIXME" i ignoruje dwukropek. Jeśli zaznaczysz dwukropek (set iskeyword+=:
), możesz teraz zdefiniować dodatkowy bit podświetlenia:
syn keyword myTodo contained TODO: FIXME:
To od Ciebie zależy, jak chcesz pracować z istniejącymi grupami składni/podświetleń. Jeśli chodzi o jeden typ pliku, to można go dodać do grupy todo składni (np. Jeśli chcesz go wszędzie, możesz zrobić "myTodo", jak sugerowałem, a następnie połączyć go bezpośrednio do grupy podświetlania Todo (hi def link myTodo Todo
).
Alternatywnie możesz zostawić iskeyword
w spokoju (chyba polecam) i po prostu użyć dopasowania:
syn match myTodo contained "\<\(TODO\|FIXME\):"
hi def link myTodo Todo
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-04 14:17:10
augroup vimrc_todo
au!
au Syntax * syn match MyTodo /\v<(FIXME|NOTE|TODO|OPTIMIZE|XXX):/
\ containedin=.*Comment,vimCommentTitle
augroup END
hi def link MyTodo Todo
containedin
doda go do wszystkich grup kończących się na "komentarz", plus
vimCommentTitle, gdzie " TODO: foo
w przeciwnym razie nie zostałby wyróżniony jako MyTodo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-04 01:39:09
Jeśli tworzysz własne środowisko, make syntax file (not .vimrc)
-
Globalny plik składni znajduje się w katalogu vim (np. /usr/share/vim/vim72/syntax / c.vim)
-
I jeśli zrobisz ~/.vim / syntax / c. vim, wtedy możesz dodać składnię do swojego własne. (override)
Wystarczy dodać do tego pliku dodatkową składnię. (tak robi @Jefromi)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-16 08:13:33