2010-11-12 108 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 \)\>/