2

我正在尝试为 Vim 编写语法文件。

其中一行代码读取

syn match constant "\**\*"

而许多其他行之一读取

syn keyword aiOperators up-build

高亮代码如下:

hi constant gui=bold
hi aiOperators guifg=green

但是,上面的结果是只突出显示了以下内容:

  • 每个常数的星号的星号,但不是它们之间的字符。
  • 直到aiOperators的第一个连字符为止的字符。

似乎是什么问题?

4

1 回答 1

5

常量的正则表达式指定一个文字星号,零次或多次,后跟一个文字星号。如果您打算匹配由星号分隔的字符,您需要类似\*\w\+\*:一个文字星号,后跟一个或多个单词字符,然后是一个文字星号。

:syn keyword唯一适用于关键字字符;默认情况下,连字符包括在内,因此匹配停止。如果对于您的文件类型,连字符属于关键字字符集,请使用

:setlocal iskeyword+=-

这不应该放在语法文件本身中,而应该放在~/.vim/ftplugin/myfiletype.vim. 否则,使用:syn match.

于 2012-09-02T18:38:23.740 回答