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