2010-11-12 130 views

回答

32

您可以使用:match命令。

:match Todo /word1/ 

该命令的第一个参数是高亮的基团(以查看所有可用组:highlight)。第二个参数是搜索模式。

你可以把它们放在任何文件中并通过:source加载。

另一种方式是改变正则表达式(THX @zpon):

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

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

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

当我添加更多你可以用':match',':2match'和':3match'命令来创建一个文件,这个文件只有最后一行被高亮显示 – zpon 2010-11-12 08:29:45

+5

想象出来,:匹配VisualNOS/word1 \ | word2 \ | word3/ – zpon 2010-11-12 08:35:49

+8

要做到这一点,因此您可以存储三种模式。但是你也可以使用':call matchadd()'(':help matchadd()')。 – Benoit 2010-11-12 10:01:59

13

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

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

把这几行的任何文件和:source,或在您的~/.vim/after/syntax/c.vim倾销它为它是sourceð自动为所有C文件(为您挑选自己感兴趣的文件类型,语法文件)。

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 
+0

syn关键字方法有什么限制吗?我似乎对我的一个tex文件没有任何影响,但对所有其他文件 – zpon 2010-11-12 09:47:11

+0

我知道的唯一限制是字中的字符必须全部是关键字字符(即没有':'或其他符号)和你不能使用vim特别的语法相关选项关键字('contained'等)之一。对于那些我会用'syn match MyHighlightGroup/\ /'或者其他什么的。 – DrAl 2010-11-12 09:53:47

+0

这很奇怪,我只使用了像“that”和“there”这样的普通单词。 – zpon 2010-11-12 10:14:17

-1

:比赛的Todo/\ < \(字词\ |字词2 \ | WORD3 \)\>/