Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 如何创建可以包含在任何位置的语法规则?_Vim_Syntax Highlighting - Fatal编程技术网

Vim 如何创建可以包含在任何位置的语法规则?

Vim 如何创建可以包含在任何位置的语法规则?,vim,syntax-highlighting,Vim,Syntax Highlighting,my.vimrc中的以下片段突出显示了灰色阴影中行尾多余的空白: autocmd Syntax*语法与MySpace/\s匹配\+$/ autocmd ColorScheme*突出显示MySpace字符MBG=238 但是,当这个空白已经被语法组匹配时,这就不起作用了。例如,各种注释类型中的尾随空格都没有标记 本手册讨论了语法组的contains=ALL选项,但似乎没有类似的containedin=ALL。我能以任何方式模仿它吗?我能想到的唯一方法是在MySpace的containedin=选

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

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