I don't know why that happens but you can find out where it happens by moving the cursor to the culprit '0' and issuing the following command
:execute "verbose highlight ".synIDattr(synID(line("."),col("."),1),"name")
excecute
allows you to build a string and execute it as a command
verbose
followed by some setting will let you know where that setting was last set
highlight
is usually used to set highlighting for a syntax item but, like many other settings, if you execute it without any highlighting instructions for the item, it will instead tell you about what instructions are already set
synIDattr()
will for some syntax item retrieve some attribute
synID()
will get the ID of the syntax item at some line,column position in your buffer
line(".")
will get the line which the cursor is on
col(".")
will get the column which the cursor is on
1
this last argument to synID()
has to do with transparency when syntax items overlap-we want the effective syntax item (see :help synID()
)
"name"
this last argument to synIDattr()
is which attribute to get
So, the command will "execute verbose info on highlight setting for the syntax item under the cursor," which will tell you from which file the syntax rule that annoys you is set. It won't fix it, but it'll tell you where to look.
Look at :help {x}
for any of these commands/functions (i.e., not the last two) for more information.