我正在自定义.vim语法高亮显示,语法文件存在一个问题。这是代码:
syn keyword vimKeyword contains contained
当我尝试打开.vim文件时,由于contains
是一个实际的关键字,因此出现错误:
Error detected while processing .vim/syntax/vim.vim
E395: contains argument not accepted here
是否可以不使用syn match
突出显示默认的vim关键字?
答案 0 :(得分:1)
:help E789
提到了这一点:
请注意,当您拥有与选项相同的关键字时(即使 此处不允许的一种),则无法使用。使用比赛 代替。
也就是说,对我来说似乎有用的只是定义一个关键字contains
:
syn keyword vimKeyword contains
其他关键字可以通过单独的:syn keyword vimKeyword
命令定义,因为它们是累积的。
另一种技巧是使用可选的尾部定义关键字,但将其保留为空:
syn keyword vimKeyword contains[] contained
但是由于这两个都是(错误地)使用了Vimscript解析器的实现细节,我将不依赖它们,而是使用:syntax match
,如所记录。