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 - Fatal编程技术网

Vim 如何设置一个全局语法规则,使其优先于特定于文件的规则?

Vim 如何设置一个全局语法规则,使其优先于特定于文件的规则?,vim,Vim,我希望意外角色的背景颜色与普通角色不同。我将以下突出显示规则放入我的.vimrc: syntax match NotPrintableAscii "[^\x20-\x7F]" hi NotPrintableAscii ctermbg=236 这句话对于某些文件来说很好,但是对于任何具有特定于文件类型的语法规则的文件都不起作用 我应该在何处设置此选项以使其适用于所有文件类型?此选项有时仅适用于以下两种情况: 它只匹配尚未包含在另一个语法组中的顶级元素。添加containedin=ALL以将其嵌

我希望意外角色的背景颜色与普通角色不同。我将以下突出显示规则放入我的
.vimrc

syntax match NotPrintableAscii "[^\x20-\x7F]"
hi NotPrintableAscii ctermbg=236
这句话对于某些文件来说很好,但是对于任何具有特定于文件类型的语法规则的文件都不起作用


我应该在何处设置此选项以使其适用于所有文件类型?

此选项有时仅适用于以下两种情况:

  • 它只匹配尚未包含在另一个语法组中的顶级元素。添加
    containedin=ALL
    以将其嵌入到所有位置。请注意,这可能会破坏现有语法
  • ~/.vimrc
    中的定义太早;另一个语法脚本将覆盖您的语法脚本。将
    :autocmd Syntax*
    前置到
    :Syntax
    命令,并将其置于
    ~/.vimrc
    中的
    :Syntax on
    之后
您需要两个条目,一个用于没有文件类型特定语法规则的文件(例如没有扩展名的文件),另一个用于有语法规则的文件(例如
.py
文件):


谢谢你的回答。“将
:autocmd Syntax*
前置到
:Syntax
命令”是什么意思?此:
autocmd Syntax*语法与NotPrintableAscii“[^\x20-\x7F]”匹配。
syntax on

" For files that don't have filetype-specific syntax rules
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