我希望意外字符具有与通常不同的背景颜色。我在.vimrc
中添加了以下高亮显示规则:
syntax match NotPrintableAscii "[^x20-x7F]"
hi NotPrintableAscii ctermbg=236
这个词对于某些文件很有用,但是对于任何具有特定于文件类型的语法规则的文件不起作用。
我应该在哪里设置这个以便它适用于所有文件类型?
这只在某些时候起作用的事实是由于以下两点:
- 它只匹配尚未包含在另一个语法组中的顶层元素。添加
containedin=ALL
将其嵌入到任何地方。注意,这可能会破坏现有的语法。 -
~/.vimrc
中的定义太早;另一个语法脚本将覆盖您的语法脚本。将:autocmd Syntax *
前置到:syntax
命令,并将此放在~/.vimrc
中的:syntax on
之后。
您需要两个条目,一个用于没有特定于文件类型的语法规则的文件(例如没有扩展名的文件),另一个用于有语法规则的文件(例如.py
文件):
syntax on
" For files that don't have filetype-specific syntax rules
autocmd BufNewFile,BufRead *syntax match NotPrintableAscii "[^x20-x7F]"
" For files that do have filetype-specific syntax rules
autocmd Syntax * syntax match NotPrintableAscii "[^x20-x7F]" containedin=ALL
hi NotPrintableAscii ctermbg=236