Vim语法不正确匹配

LambdaBeta

我有一个快速的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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章