Vim 如何创建可以包含在任何位置的语法规则?
my.vimrc中的以下片段突出显示了灰色阴影中行尾多余的空白:Vim 如何创建可以包含在任何位置的语法规则?,vim,syntax-highlighting,Vim,Syntax Highlighting,my.vimrc中的以下片段突出显示了灰色阴影中行尾多余的空白: autocmd Syntax*语法与MySpace/\s匹配\+$/ autocmd ColorScheme*突出显示MySpace字符MBG=238 但是,当这个空白已经被语法组匹配时,这就不起作用了。例如,各种注释类型中的尾随空格都没有标记 本手册讨论了语法组的contains=ALL选项,但似乎没有类似的containedin=ALL。我能以任何方式模仿它吗?我能想到的唯一方法是在MySpace的containedin=选
autocmd Syntax*语法与MySpace/\s匹配\+$/
autocmd ColorScheme*突出显示MySpace字符MBG=238
但是,当这个空白已经被语法组匹配时,这就不起作用了。例如,各种注释类型中的尾随空格都没有标记
本手册讨论了语法组的
contains=ALL
选项,但似乎没有类似的containedin=ALL
。我能以任何方式模仿它吗?我能想到的唯一方法是在MySpace
的containedin=
选项中列出所有相关的语法组,这显然很乏味,一点也不优雅。不知道如何使用语法
,但您可以使用这些选项突出显示尾随空格
从my.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:»
您应该使用
:match
命令(或matchadd()
),如关于此特定主题中所述
如果你喜欢一个现成的解决方案,你也可以试试,或者是插件页面上列出的一个替代方案。非常有趣。我已经在我的
.vimrc
中添加了set list listchars=trail:·,nbsp:·,tab:\\
。有趣的事实:结尾的两个转义空格打破了语法高亮显示。'listchars'
的缺点是其他字符也会改变它们的外观。此外,许多用户希望以更激进的颜色突出显示尾随空格错误。您可以通过hi SpecialKey-ctermfg=red-guifg=red