【问题标题】:Is there any way to highlight default vim keyword without using match?有没有办法在不使用匹配的情况下突出显示默认的 vim 关键字?
【发布时间】:2019-04-04 15:50:42
【问题描述】:

我正在制作自定义 .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 关键字?

【问题讨论】:

  • 如果你说的只是改变某些单词/语法的背景,你可以只是,例如,hi Comment ctermbg=135
  • 谢谢回复,但是contains不仅仅是.vim关键字怎么办?

标签: vim


【解决方案1】:

:help E789 提到这一点:

请注意,当您有一个与选项相同的关键字时(即使 一个在这里不允许的),你不能使用它。使用匹配 而是。

也就是说,似乎对我有用的是只定义一个关键字contains

syn keyword vimKeyword contains

可以通过单独的:syn keyword vimKeyword 命令定义其他关键字,因为它们是累积的。

另一个技巧是使用可选的尾部定义关键字,但保持为空:

syn keyword vimKeyword contains[] contained

但由于这两者都(错误地)使用了 Vimscript 解析器的实现细节,我将依赖它们,而是使用 :syntax match,如文档所述。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 2018-01-27
    相关资源
    最近更新 更多