无论文件类型如何,我都要突出显示某个单词。在我的.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
,或者我可以以某种方式应用它?
答案 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=+>+