Vim语法高亮和某些字符

Ash*_*hot 2 vim

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

其中一行代码读取

syn match constant "\**\*"
Run Code Online (Sandbox Code Playgroud)

而许多其他行之一读取

syn keyword aiOperators up-build
Run Code Online (Sandbox Code Playgroud)

突出显示的代码如下:

hi constant gui=bold
hi aiOperators guifg=green
Run Code Online (Sandbox Code Playgroud)

但是,上述结果仅突出显示以下内容:

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

这似乎是什么问题?

Ing*_*kat 5

常量的正则表达式指定一个文字星号,零次或多次,后跟一个文字星号.如果您打算匹配由星号分隔的字符,则需要以下内容\*\w\+\*:字面星号,后跟一个或多个单词字符,后跟字面星号.

:syn keyword方式只适用于关键字的字符; 默认情况下,包括连字符,因此匹配停在那里.如果对于您的文件类型,连字符属于关键字字符集,请使用

:setlocal iskeyword+=-
Run Code Online (Sandbox Code Playgroud)

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