Vim突出显示单词列表

时间:2010-11-12 08:05:09

标签: vim syntax-highlighting

我需要在vim中突出显示单词列表,最好是在文件中定义单词。有点像拼写检查。我一直在关注http://vim.wikia.com/wiki/Highlight_multiple_words,但它要求我将每个单词定义为新位置,并且不支持将单词存储到文件中(尽管它们是可存储的)。

3 个答案:

答案 0 :(得分:38)

您可以使用:match命令。

:match Todo /word1/

该命令的第一个参数是highlight-group(查看所有可用组:highlight)。第二个参数是搜索模式。

您可以将这些文件放入任何文件中,然后通过:source加载。

另一种方法是更改​​正则表达式(thx @zpon):

:match Todo /word1\|word2\|word3/

如果您想以不同方式突出显示它们:

:match Todo /word1/
:2match Error /word2/
:3match Title /word3/

答案 1 :(得分:16)

我建议您使用syn keyword。还有其他选项,例如michael.kebe:match等建议的syn match,但这些选项都基于正则表达式匹配。这样做的缺点是,随着您想要匹配的单词数量的增加,Vim的速度会降低。关键字匹配更快更多。您还可以在一行中轻松定义多个关键字(尽管一行中有大约512个字符的限制,如果内存正确地为我服务)。

syn keyword Todo word1 word2 word3
syn keyword Todo word4
syn keyword Todo word5

将这些行放在任何文件中:source或将其转储到~/.vim/after/syntax/c.vim中,以便所有C文件自动source(选择文件类型的语法文件)你有兴趣)。

michael.kebe的回答一样,第一个参数(本例中为Todo)是突出显示组。如果您愿意,可以组成自己的组并定义突出显示:

syn keyword MyHighlightGroup word6 word7
" Then EITHER (define your own colour scheme):
hi MyGroupName guifg=Blue ctermfg=Blue term=bold
" OR (make the colour scheme match an existing one):
hi link MyGroupName Todo

答案 2 :(得分:-1)

:匹配Todo / \< \(word1 \ | word2 \ | word3 \)\> /