我有一个快速的vim问题。在给定类型的语法文件中,我有:
if exists("b:current_syntax")
finish
endif
syntax keyword AssemblyInstruction ADD SUB MUL DIV
syntax keyword AssemblyInstruction LDR STR GET PUT
syntax match AssemblyComment /\v;.*$/
syntax match AssemblyRegister /\v[rR]\d+/
highlight def link AssemblyInstruction Function
highlight def link AssemblyComment Comment
highlight def link AssemblyRegister Type
let b:current_syntax="asm"
当我set syntax=asm
“正确”突出显示ADD SUB MUL和DIV(尽管它似乎将突出显示用于预处理程序而不是函数),并且它获得正确的注释。但是,涉及LDR STR GET PUT时,根本不会突出显示它们。寄存器也不突出显示。
我的语法文件怎么了?(它位于.vim / syntax中,但我也尝试将其复制到.vim / after / syntax中无济于事)
我觉得
if exists("b:current_syntax")
finish
endif
的意思是,如果b:current_syntax
存在变式,则结束,什么也不做。因此,如果此变量已被允许,它将不会执行任何操作。可能会asm
从其他地方读取原始vim语法文件。尝试:verbose syntax
查看已使用语法设置的内容,并:set rtp?
查找在其中搜索运行时文件的目录列表。
如果您想通过将文件放入来“覆盖”语法.vim/after/syntax
,则可以删除if语句。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句