如何创建可以包含在任何地方的语法规则?

时间:2012-05-29 11:57:31

标签: vim syntax-highlighting

我的.vimrc的以下片段以灰色阴影突出显示了行尾的多余空白:

autocmd Syntax * syntax match MySpace /\s\+$/
autocmd ColorScheme * highlight MySpace ctermbg=238

但是当这个空格已经被语法组匹配时,这不起作用。例如,不标记各种类型注释中的尾随空格。

本手册讨论了语法组的contains=ALL选项,但似乎没有类似的containedin=ALL。我可以以任何方式模仿它吗?我可以提出的唯一方法是在containedin=的{​​{1}}选项中列出所有相关的语法组,这显然是单调乏味而且不是很优雅。

2 个答案:

答案 0 :(得分:1)

不知道如何使用Syntax执行此操作,但您可以使用listchars选项突出显示尾随空格。

来自我的.vimrc

" List chars
set listchars=""           " Reset the listchars
set listchars+=tab:\|\     " show tabs as "|"
set listchars+=nbsp:·      " show non-breaking spaces as "·"
set listchars+=trail:·     " show trailing spaces as "·"
set listchars+=precedes:«
set listchars+=extends:»

答案 1 :(得分:0)

您应该使用:match命令(或matchadd()),如Vim Tips Wiki article中有关此特定主题的说明。

如果你想要一个现成的解决方案,你也可以尝试my ShowTrailingWhitespace plugin,或插件页面上列出的其中一个替代方案。