Vim突出显示单词列表

zpo*_*pon 18 vim syntax-highlighting

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

mic*_*ebe 38

您可以使用该:match命令.

:match Todo /word1/
Run Code Online (Sandbox Code Playgroud)

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

您可以将它们放在任何文件中并通过它加载:source.

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

:match Todo /word1\|word2\|word3/
Run Code Online (Sandbox Code Playgroud)

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

:match Todo /word1/
:2match Error /word2/
:3match Title /word3/
Run Code Online (Sandbox Code Playgroud)

  • 你有`:match`,`:2match`和`:3match`命令来做到这一点,因此你可以存储三种模式.但你也可以使用`:call matchadd()`(`:help matchadd()`). (8认同)
  • 想出来,:匹配VisualNOS/word1\| word2\| word3 / (5认同)
  • 当我向文件添加多行时,它只是突出显示的最后一行 (2认同)

DrA*_*rAl 17

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

syn keyword Todo word1 word2 word3
syn keyword Todo word4
syn keyword Todo word5
Run Code Online (Sandbox Code Playgroud)

将这些行放在任何文件中,: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
Run Code Online (Sandbox Code Playgroud)