如何自动突出显示vim中的单词?

时间:2012-03-04 19:58:26

标签: syntax-highlighting vim

无论文件类型如何,我都要突出显示某个单词。在我的.vimrc中,我添加了:

highlight link notes todo
syntax match notes contained "TODO"
syntax match notes contained "NOTE"
syntax match notes contained "!!!"
syntax match notes contained "???"

注意:我也尝试了syntax match notes "TODO"(没有包含)。

不幸的是,我实际上无法突出显示这些关键字。

修改

我将代码移到.vim/after/syntax/html.vim以便应用语法。它目前看起来像:

syntax match todo contained "\<\(TODO\|NOTE\|!!!\|???\)"

现在,当我输入:syntax时,我得到Todo xxx match /\<\(TODO\|NOTE\|!!!\|???\)/ contained

但是,当我尝试在其中键入带有TODO的html注释时(即<!-- TODO something -->),不会应用突出显示。

另外,我是否必须为每种文件类型创建.vim/after/syntax/file_type.vim,或者我可以以某种方式应用它?

3 个答案:

答案 0 :(得分:2)

This食谱包含一个脚本以及完成您正在尝试的操作的说明。

答案 1 :(得分:2)

全局突出显示的可能解决方法是将关键字附加到现有语法组。在.vimrc中:

function! HighlightAnnotations()
  syn keyword vimTodo contained HACK OPTIMIZE REVIEW
  syn keyword rubyTodo contained HACK REVIEW
  syn keyword coffeeTodo contained HACK OPTIMIZE REVIEW
  syn keyword javaScriptCommentTodo contained HACK OPTIMIZE REVIEW
endfunction
autocmd Syntax * call HighlightAnnotations()

我正在为我常用的语言添加现有的Todo类型。我把它添加到所有文件类型都很懒,但如果你愿意,你可以更具体。

要查找现有群组,请打开包含您感兴趣的扩展程序的文件,然后运行:syn list。 Vim将提供当前加载的所有语法组的列表。

希望这是一个可以通过的解决方案,直到你能找到一种方法在所有文件类型中实现这一点。

答案 2 :(得分:1)

我已经迟到了,但是我通过将这三行添加到我在$HOME/vimfiles/after/syntax:

syntax keyword htmlTodo contained todo<br>
syntax match htmlComment /<!--.*/ contains=htmlTodo<br>
hi def link htmlTodo Todo

我只使用“todo”,但可以通过添加更多关键字来扩展列表,即语法关键字htmlTodo包含todo hack test review ...

另一种选择:
删除语法匹配...行并添加以下内容:

syntax clear htmlComment
syntax clear htmlCommentPart
syntax region htmlComment                start=+<!+      end=+>+  contains=htmlCommentPart,htmlCommentError,@Spell,htmlTodo 
syntax region htmlCommentPart  contained start=+--+      end=+--\s*+  contains=@htmlPreProc,@Spell,htmlTodo
syntax region htmlComment                  start=+<!DOCTYPE+ keepend end=+>+